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) {... поля создаются сразу с заданными значениями. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.