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

Классы С++


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

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

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

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

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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