11.9C派生类的构造函数

11.9C派生类的构造函数

ID:44351084

大小:52.74 KB

页数:4页

时间:2019-10-21

11.9C派生类的构造函数_第1页
11.9C派生类的构造函数_第2页
11.9C派生类的构造函数_第3页
11.9C派生类的构造函数_第4页
资源描述:

《11.9C派生类的构造函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用户在声明类时可以不定义构造函数,系统会自动设置一个默认的构造函数,在定义类对象时会自动调用这个默认的构造函数。这个构造函数实际上是一个空函数,不执行但可操作。如果需要对类中的数据成员初始化,应自己定义构造函数。构造函数的主要作用是对娄成员初始化。基类的构造函数是不能继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。所以在设计派生类的构造函数时,不仅要考虑派生类所增加的数据成员的初始化,还应当考虑基类的数据成员初始化。也就是说,希望在执行

2、派生类的构造函数时,使派生类的数据成员和基类的数据成员同时都被初始化。解决这个问题的思路是,在执行派生类的构造函数时,调用基类的构造函数。但可派生类都包含基类的成员,简单的派生类只有一个基类,而且只有一级派生(只有直接派生类,没有间接派生类),在派生类的数据成员中不包含基类的对象(即子对象)。下面先介绍一下在简单派生类中如何定义构造函数。[例11.5]简单的派生类的构造函数。#inelude#includeusingnamespacestd;classStudent//声明基类S

3、tudent{public:Student(intn,stringnam,chars)//基类构造函数{num二n;name二nam;sex=s;}~Student(){}〃基类析构函数protected:〃保护部分intnum;stringname;charsex;};classStudentl:publicStudent〃声明派生类Studentl{public:〃派生类的公用部分Studentl(intn,stringnam.charsjnta,stringad):Student(n,narrbs)〃派生类构

4、造函数age二a;〃在函数体中只对派生类新增的数据成员初始化addr=ad;}voidshow()coutvv1'num:um<

5、(10(H0,"Wang・liTf:19,"115BeijingRoad,Shanghai1');Studentlstud2(10011,"Zhang-fun","213ShanghaiRoad,Beijing");studl.show();//输出第一^学生的数据stud2.show();〃输岀第二个学生的数据return0;}运行结果为:num:10010name:Wang・lisex:faddress:115BeijingRoad.Shanghainum:10011name:Zhang・funsex:madd

6、ress:213ShanghaiRoad.Beijing请注意派生类构造函数首行的写法:Studentl(intn,stringnamfcharsfintazstringad):Student(n,namrs)其一般形式为:派生类构造函数名(总参数表列):基类构造函数名(参数表列){派生类中新增数据成员初始化语句}冒号前面的部分是派生类构造函数的主干,它和以前介绍过的构造函数的形式相同,但它的总参数表列中包括基类构造函数所需的参数和对派生类新增的数据成员初始化所需的参数;冒号后面的部分是要调用的基类构造函数及其参数

7、。从上面列出的派生类Studentl构造函数首行中可以看到,派生类构造函数名(Studentl)后面括号内的参数表列中包括参数的类型和参数名(如intn),而基类构造函数名后面括号内的参数表列只有参数名而不包括参数类型(如n、nam、s),因为在这里不是定义基类构造函数,而是调用基类构造函数,因此这些参数是实参而不是形参。它们可以是常量、全局变量和派生类构造函数总参数表中的参数。从上面列出的派生类Studentl构造函数中可以看到调用基类构造函数Student时给出3个参数(n、nam.s),这是和定义基类构造函数

8、时指定的参数相匹配的。派生类构造函数studentl有5个参数,其中前3个是用来传递给基类构造函数的,后面两个(a和ad)是用来对派生类所增加的数据成员初始化的。在main函数中,建立对象studl时指定了5个实参。它们按传递给派生类构造函数Studentl的形参。然后,派生类构造函数将前面3个传递给基类构造函数的形参。在上例中也可以将派生类构造函数在类外面

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。