欢迎来到天天文库
浏览记录
ID:39518193
大小:654.51 KB
页数:47页
时间:2019-07-05
《派生类的构造函数和析构函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++面向对象程序设计15.5派生类的构造函数和析构函数基类的构造函数不被继承,派生类中需要声明自己的构造函数。在设计派生类的构造函数时候,不仅要考虑派生类所增加的数据成员初始化,也要考虑基类的数据成员初始化。声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,需要调用基类构造函数完成。如果要调用基类带参数的构造函数,派生类的构造函数需为基类的构造函数传递参数。5.5.1简单的派生类的构造函数简单的派生类只有一个基类只有一级派生不包含基类的对象派生类构造函数名(总参数列表):基类构造函数名(参
2、数列表){派生类中新增数据成员初始化语句};#include//例5.5#includeusingnamespacestd;classStudent{public:Student(intn,stringnam,chars){num=n;name=nam;sex=s;}~Student(){}protected:intnum;stringname;charsex;};classStudent1:publicStudent{public:Student1(intn,stringnam,c
3、hars,inta,stringad):Student(n,nam,s){age=a;addr=ad;}voidshow(){cout<<"num:"<4、"Wang-li",'f',19,"115BeijingRoad,Shanghai");Student1stud2(10011,"Zhang-fun",'m',21,"213ShanghaiRoad,Beijing");stud1.show();stud2.show();return0;}5.5.1简单派生类的构造函数5.5.1简单的派生类的构造函数建立一个对象时,执行构造函数的顺序是:派生类构造函数先调用基类的构造函数,再执行派生类构造函数本身(派生类构造函数的函数体)。5.5.2有子对象的派生类的构造函数派生类构造5、函数的任务:对基类数据成员初始化对子对象数据成员初始化对派生类数据成员初始化#include//例5.6#includeclassStudent{public:Student(intn,stringnam){num=n;name=nam;}voiddisplay(){cout<<"num:"<6、ublic:Student1(intn,stringnam,intn1,stringnam1,inta,stringad):Student(n,nam),monitor(n1,nam1){age=a;addr=ad;}voidshow(){cout<<"Thisstudentis:"<7、8、造函数名1(参数表列1),基类构造函数名2(参数表列2)…,子对象名1(子对象参数1),子对象名2(子对象参数2),…{派生类中新增数据成员初始化语句}5.5.2有子对象的派生类的构造函数执行派生类构造函数的顺序:调用基类构造函数,对基类数据成员初始化调用子对象构造函数,对子对象数据成员初始化在执行派生类构造函数本身,对派生类数据
4、"Wang-li",'f',19,"115BeijingRoad,Shanghai");Student1stud2(10011,"Zhang-fun",'m',21,"213ShanghaiRoad,Beijing");stud1.show();stud2.show();return0;}5.5.1简单派生类的构造函数5.5.1简单的派生类的构造函数建立一个对象时,执行构造函数的顺序是:派生类构造函数先调用基类的构造函数,再执行派生类构造函数本身(派生类构造函数的函数体)。5.5.2有子对象的派生类的构造函数派生类构造
5、函数的任务:对基类数据成员初始化对子对象数据成员初始化对派生类数据成员初始化#include//例5.6#includeclassStudent{public:Student(intn,stringnam){num=n;name=nam;}voiddisplay(){cout<<"num:"<6、ublic:Student1(intn,stringnam,intn1,stringnam1,inta,stringad):Student(n,nam),monitor(n1,nam1){age=a;addr=ad;}voidshow(){cout<<"Thisstudentis:"<7、8、造函数名1(参数表列1),基类构造函数名2(参数表列2)…,子对象名1(子对象参数1),子对象名2(子对象参数2),…{派生类中新增数据成员初始化语句}5.5.2有子对象的派生类的构造函数执行派生类构造函数的顺序:调用基类构造函数,对基类数据成员初始化调用子对象构造函数,对子对象数据成员初始化在执行派生类构造函数本身,对派生类数据
6、ublic:Student1(intn,stringnam,intn1,stringnam1,inta,stringad):Student(n,nam),monitor(n1,nam1){age=a;addr=ad;}voidshow(){cout<<"Thisstudentis:"<7、8、造函数名1(参数表列1),基类构造函数名2(参数表列2)…,子对象名1(子对象参数1),子对象名2(子对象参数2),…{派生类中新增数据成员初始化语句}5.5.2有子对象的派生类的构造函数执行派生类构造函数的顺序:调用基类构造函数,对基类数据成员初始化调用子对象构造函数,对子对象数据成员初始化在执行派生类构造函数本身,对派生类数据
7、8、造函数名1(参数表列1),基类构造函数名2(参数表列2)…,子对象名1(子对象参数1),子对象名2(子对象参数2),…{派生类中新增数据成员初始化语句}5.5.2有子对象的派生类的构造函数执行派生类构造函数的顺序:调用基类构造函数,对基类数据成员初始化调用子对象构造函数,对子对象数据成员初始化在执行派生类构造函数本身,对派生类数据
8、造函数名1(参数表列1),基类构造函数名2(参数表列2)…,子对象名1(子对象参数1),子对象名2(子对象参数2),…{派生类中新增数据成员初始化语句}5.5.2有子对象的派生类的构造函数执行派生类构造函数的顺序:调用基类构造函数,对基类数据成员初始化调用子对象构造函数,对子对象数据成员初始化在执行派生类构造函数本身,对派生类数据
此文档下载收益归作者所有