Jump to content

Классы С++


Recommended Posts

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

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;}
Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...