little_greg Опубликовано 12 августа, 2009 Жалоба Поделиться Опубликовано 12 августа, 2009 Объясните, плиз, что означает ":" после объявления конструктора в классе. class Advisor{};const int MAXNAMESIZE = 40;class Student{public: Student(char* pName = "no name") : average(0.0), semesterHours(0) { strncpy(name, pName, MAXNAMESIZE); name[MAXNAMESIZE - 1] = '\0'; cout << "constructing Student " << name << endl; } void addCourse(int hours, float grade) { cout << "dobovlyaem ocenku dlya " << name << endl; average = (semesterHours * average + grade); semesterHours += hours; average = average / semesterHours; } int hours() {return semesterHours;} float gpa() {return average;}protected: char name[MAXNAMESIZE]; int semesterHours; float average;};class GraduateStudent : public Student{public: GraduateStudent(char* pName, Advisor& adv, float qG = 0.0) : Student(pName), advisor(adv), qualifierGrade(qG) { cout << "constructing GraduateStudent " << pName << endl; } float qualifier() {return qualifierGrade;}protected: Advisor advisor; float qualifierGrade;};int main(){Advisor advisor;Student llu("Cy N Sense");GraduateStudent gs("Matt Madox" , advisor, 1.5);llu.addCourse(3, 2.5);gs.addCourse(3, 3.0);cout << "Ocenka Matt = " << gs.qualifier() << endl;system("pause");return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 12 августа, 2009 Жалоба Поделиться Опубликовано 12 августа, 2009 Так записывается инициализация данных... Можно было бы написать так: Student(char* pName = "no name") { average=0.0; semesterHours=0; strncpy(name, pName, MAXNAMESIZE); name[MAXNAMESIZE - 1] = '\0'; cout << "constructing Student " << name << endl; } Но в етом случае создание объекта выполняется медленнее. Потому, что сначала создаются поля (average, semesterHours) без заданого значения и уже позже им присваиваются значения. Тогда как, при инициализация после объявления: Student(char* pName = "no name") : average(0.0), semesterHours(0) {... поля создаются сразу с заданными значениями. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти