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

#include<iostream>
#include<string>
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. 执行派生类构造函数体
  ****析构函数相反****
调用内嵌对象成员构造函数的顺序由它们在类中声明的顺序确定,与在派生类构造函数首部的顺序无关
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值