含有多个对象成员的派生类构造函数的执行顺序

#include
#include
using namespace std;
class Student					声明基类student 
{
	public:
		Student(int number1,string name1,float score1)					//声明基类构造函数 
		{
			number=number1;
			name=name1;
			score=score1;
		}
		void print()
		{
			cout<<"学号:"<<number<<endl;
			cout<<"姓名:"<<name<<endl;
			cout<<"成绩:"<<score<<endl;
		}
	protected:
		int number;
		string name;
		float score;
};
class UStudent:public Student					//声明公有派生类ustudent 
{
	public:
		UStudent(int number1,string name1,float score1,int number2,string name2,float score2,int number3,string name3,float score3,string major1)
		:Student(number1,name1,score1),auditor2(number3,name3,score3),auditor1(number2,name2,score2)
		{
			major=major1;
		}
		void print()
		{
			cout<<"正式生是:"<<endl;
			Student::print();
			cout<<"专业:"<<major<<endl;
		}
		void print_auditor1()
		{
			cout<<"旁听生是:"<<endl;
			auditor1.print();
		}
		void print_auditor2()
		{
			cout<<"旁听生是:"<<endl;
			auditor2.print();
		}
	private:				
		string major;					//专业 
		Student auditor1;				//定义对象成员1(旁听生) 
		Student auditor2;				//定义对象成员2(旁听生)
};
int main()
{
	UStudent stu(2001,"张志",95,3001,"王大宾",66,3002,"李菁菁",50,"信息安全");
	stu.print();
	stu.print_auditor1();
	stu.print_auditor2();
	return 0; 
}

 

 1. 执行基类构造函数
 2. 执行内嵌对象的构造函数
 3. 执行派生类构造函数体
  ****析构函数相反****
调用内嵌对象成员构造函数的顺序由它们在类中声明的顺序确定,与在派生类构造函数首部的顺序无关

你可能感兴趣的:(含有多个对象成员的派生类构造函数的执行顺序)