C++_继承.ppt

C++_继承.ppt

ID:49261474

大小:434.50 KB

页数:29页

时间:2020-02-01

C++_继承.ppt_第1页
C++_继承.ppt_第2页
C++_继承.ppt_第3页
C++_继承.ppt_第4页
C++_继承.ppt_第5页
资源描述:

《C++_继承.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、继承第八章回顾友元现象友元函数友元类运算符号重载解决了什么问题赋值运算符重载一元运算符二元运算符其他运算符目标继承访问控制继承中的构造函数和析构函数继承中的一种函数现象函数覆盖继承继承是允许重用现有类来构造新类的特性基类方法和属性派生类基类方法+附加方法优点代码的可重用性-类库重定义基类的成员函数向派生类添加新成员不需要了解核心技术的细节继承的例子处理某企业中雇员的程序EmployeeManager基类派生类派生自使用一个箭头从派生类指向基类表示派生类引用基类的函数和数据,而基类没有访问派生类的权限继承的实现派生类的声明必须指定基类的名称派生类:访问控制权限说明符基

2、类classManager:publicEmployee任何类都能用作基类基类分为两种类型直接基类间接基类直接基类和间接基类直接基类classA{};classB:publicA//A是B的直接基类{};间接基类classA{};classB:publicA{};classC:publicB//A是c的间接基类{};继承的类型继承多级继承单一继承多重继承层次继承单一继承AB多级继承ABC层次继承ABCDE多重继承ABC单个类成员的访问规则访问控制说明符从自身类访问从派生类访问从类外访问public可以可以可以protected可以可以不可以private可以不可以不

3、可以派生类访问控制——基本原则派生类的函数能够访问基类的保护和公有成员派生类访问控制——继承类型基类成员公有继承私有继承保护继承公有公有私有保护保护保护私有保护私有不被继承不被继承不被继承继承类型示例classA{//基类private:intprivA;protected:intprotA;public:intpubA;};classB:publicA{//公共派生类public:voidfn(){inta;a=privA;//错误:不可访问a=protA;//有效a=pubA;//有效}};示例(续)classC:privateA{//私有派生类public:v

4、oidfn(){inta;a=privA;//错误:不可访问a=protA;//有效a=pubA;//有效}};voidmain(){intm;Bobj1;//公共私有派生类对象示例(续)m=obj1.privA;//错误:不可访问m=obj1.protA;//错误:保护成员只继承给子类用,不可访问m=obj1.pubA;//有效:B是从A公共派生的Cobj2;//私有派生类的对象m=obj2.privA;//错误:不可访问m=obj2.protA;//错误:不可访问m=obj2.pubA;//错误:不可访问}注意:如果创建类时未给定访问说明符,则假定其为priva

5、te。派生类的可访问性有一种很轻松就能记住此表的方法:派生类无权访问基类的private成员。公有继承基类均不改变派生类从基类继承的成员的访问级别。其它两个级别的继承使继承的成员与基类有相同的访问级别私有保护共有保护私有子类成员保护保护子类成员保护共有Public继承Protected继承private继承私有子类成员多级继承派生类的类型(即public、private或protected)将影响派生类函数对多级继承中的基类的成员的访问。多级继承示例类B从类A私有派生,类C依次从类B公有派生。classA{public:inta;};classB:privateA{

6、public:intb;voidfunc_b(){intx,y;x=a;//有效y=b;//有效}};示例(续)classC:publicB{public:voidfunc_c(){intx,y;x=a;//无效y=b;//有效}};继承中的构造函数——基本原则当声明派生类的对象时,Derivedobj;它将会首先调用基类的构造函数,然后调用派生类的构造函数问题父类中可能有多个构造,子类如何确定使用那个构造呢?在没有指定的情况下,使用父类的默认构造函数,如果父类正好没有默认构造,那就会出错了。举例继承中的构造函数—如何选择基类构造函数是在派生类构造函数之后指定的,使

7、用冒号分隔Derived():Base(){}classBase{protected:inta;public:Base(){a=0;}//默认构造函数Base(intc){a=c;}//单参数构造函数};classDerived:publicBase{public:Derived():Base(){}//默认构造函数也可简写成Derived()Derived(intc):Base(c){}//单参数构造函数,如果不需要传参数给bade,则可写成Derived(intc){}或者Derived(intc):Base(){}};继承中的析构函数调用顺序与构造函数的调

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

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

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