- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13讲 类的继承
第13讲 类的继承;了解代码重用机制
什么是类的继承?
如何以继承方式定义新类?
新类对象的构造过程和析构过程。
了解多重继承的基本概念;重用=复用=再利用
C++提供很强大的代码重用机制,程序员可以很容易地在已有的代码基础上进行扩充,形成新的代码。;现实世界中的各种事物并不是孤立存在的,它们是通过各种各样的关系相互联系的。事物之间的一种重要关系就是继承。例如动物分类:
;继承;例:动物类;成员的访问属性
public:类的外部也可以访问
private:只有类成员可以访问
protected:除了类成员,也可以被本类的派生类的成员所访问。(半隐藏—对本类以及其子类公开,对外部仍然隐藏);声明一个派生类的一般格式为:
class 子类名:继承方式 基类名
继承方式有三种(缺省为private):
public:公有继承
private:私有继承
protected:保护继承
继承方式规定了派生类对于从基类继承而来的成员的访问权限。;对一个类成员有两种方式
内部访问:通过成员函数来访问
对象访问:通过类对象直接引用访问;;每个类都有自己的构造和析构函数,这类函数是不会被继承的。
派生类的构造函数负责初始化自己特有的数据成员。
由于派生类中会有从基类那里继承到的成员,所以在初始化这些成员时,需要调用基类的构造函数来完成。
创建派生类对象时,先调用其直接基类的构造函数,然后再调用自己的构造函数。
析构函数的调用顺序和构造函数完全相反。;class AA{
public:
AA(){ coutAA ; }
~AA(){ cout~AA ; }
};
?
class BB: public AA{
public:
BB(){ coutBB ; }
~BB(){ cout~BB ; }
};
class CC: public BB{
public:
CC(){ coutCC ; }
~CC(){ cout~CC ; }
};
void main(){
CC x;
};构造函数初始化列表出现在进入构造函数之前,假设A是一个类名,则:
A(): 初始化列表 {}
什么可以放在构造函数的初始化列表中
数据成员的初始化(这个工作也可以放在构造函数定义体当中)
直接基类的构造函数调用(必须放在初始化列表);多继承指的一个派生类有多个基类,他可以同时从多个基类中继承成员。
声明方式:
class D: public B1,public B2{
};
同名隐藏:当B1和B2中都有一个同名成员,那么这两个成员都会被继承到D中,所以通过D类对象在引用这个同名成员的时候需要使用作用域符::;本讲结束
文档评论(0)