Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Классы С++


Рекомендуемые сообщения

Объясните, плиз, что означает ":" после объявления конструктора в классе.

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;}
Ссылка на комментарий
Поделиться на другие сайты

Так записывается инициализация данных...

Можно было бы написать так:

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)	{...

поля создаются сразу с заданными значениями.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...