C++之继承.ppt

上传人:s****8 文档编号:82789317 上传时间:2023-03-26 格式:PPT 页数:30 大小:258.50KB
返回 下载 相关 举报
C++之继承.ppt_第1页
第1页 / 共30页
C++之继承.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《C++之继承.ppt》由会员分享,可在线阅读,更多相关《C++之继承.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Version 3.0继承继承第八章第八章回顾回顾友元函数友元函数友元类友元类操作符重载操作符重载2 2目标目标继承继承访问控制访问控制继承中的构造函数和析构函数继承中的构造函数和析构函数函数覆盖函数覆盖3 3继承继承继承是允许重用现有类来构造新类的特性基类方法和属性派生类基类方法+附加方法4 4优点优点代码的可重用性类库代码的可重用性类库重定义基类的成员函数重定义基类的成员函数向派生类添加新成员向派生类添加新成员不需要了解核心技术的细节不需要了解核心技术的细节5 5单一继承单一继承 2-1将类之间的相似性质联系起来将类之间的相似性质联系起来单一继承是从现有基类创建新类的过程单一继承是从现有基

2、类创建新类的过程6 6单一继承单一继承 2-2处理某企业中雇员的程序处理某企业中雇员的程序EmployeeManager基类派生类派生自使用使用一个箭头从派生类一个箭头从派生类指向基类指向基类表示派生表示派生类类引用引用基类的基类的函数函数和和数据数据,而基类,而基类没没有访问派生有访问派生类类的权限的权限7 7基类和基类和派生派生类类派生类的声明必须指定基类的名称派生类的声明必须指定基类的名称class Manager:public Employee任何类都能用作基类任何类都能用作基类基类分为两种类型基类分为两种类型直接基类间接基类8 8直接直接基类和基类和间接间接基类基类直接基类直接基类c

3、lass A;class B:public A/A是是B的直接基类的直接基类;间接基类间接基类class A;class B:public A;class C:public B/A是是C的间接基类的间接基类;9 9继承的类型继承的类型继承多级继承单一继承多重继承层次继承1010单一继承单一继承ABclass A;class B:public A;1111多级继承多级继承ABCclass A;class B:public A;class C:public B;1212层次继承层次继承 ABC D Eclass A;class B:public A;class C:public A;class D

4、:public C;class E:public C;1313多重继承多重继承class A;class B;class C:public A,public B;ABC1414访问控制访问控制 3-1派生类的函数派生类的函数能够访问基类的保护和公有成员派生类的对象派生类的对象公有派生的类的对象能够访问基类的公有成员私有和保护派生的类的对象不能访问基类的任何成员1515访问控制访问控制 3-2基类成员基类成员公有继承公有继承私有继承私有继承保护继承保护继承公有公有公有公有私有私有保护保护保护保护保护保护私有私有保护保护私有私有不被继承不被继承不被继承不被继承不被继承不被继承1616访问控制访问控

5、制 3-3派生类不能访问基类的私有成员派生类不能访问基类的私有成员公有继承不改变基类成员的访问级别公有继承不改变基类成员的访问级别基类的另外两种访问级别使得所有继承的成基类的另外两种访问级别使得所有继承的成员与基类成员(私有基类的私有成员或保护员与基类成员(私有基类的私有成员或保护基类的保护成员)属于相同的访问级别基类的保护成员)属于相同的访问级别1717可访问性可访问性基类的成员函数或数据何时能够被派生类基类的成员函数或数据何时能够被派生类的对象使用的对象使用无论类成员是私有、公有还是保护,它们总是能够由自身的成员函数访问在类的外部定义的对象只能访问类的公有成员1818访问基类成员访问基类成

6、员在继承中,在继承中,如果基类的成员是公有,那么派生类成员能够访问基类的成员派生类成员不能访问基类的私有成员1919protected访问控制说明符访问控制说明符保护部分类似于私有部分保护部分类似于私有部分只能被其所属类的成员访问不能被类外部的对象或函数访问区别只有在派生类中才会表现出来2020基类基类成员成员的的访问规则访问规则访问控制说明符访问控制说明符 从自身类访问从自身类访问 从派生类访问从派生类访问 从类外访问从类外访问publicpublic可以可以可以可以可以可以protectedprotected可以可以可以可以不可以不可以privateprivate可以可以不可以不可以不可以

7、不可以2121访问控制说明符的规则访问控制说明符的规则类成员总是能够被它们自己的类的方法访问类成员总是能够被它们自己的类的方法访问继承类能访问基类的公有或保护成员继承类能访问基类的公有或保护成员公有成员可以在任何地方被访问公有成员可以在任何地方被访问2222继承中的构造函数继承中的构造函数 3-1先调用基类的构造函数,然后调用派生类先调用基类的构造函数,然后调用派生类的构造函数的构造函数class Baseprotected:int a;public:Base()a=0;/默认构造函数默认构造函数 Base(int c)a=c;/单单参数构造函数参数构造函数;class Derived:pub

8、lic Basepublic:Derived():Base()/默认构造函数默认构造函数 Derived(int c):Base(c)/单单参数构造函数参数构造函数;2323继承中的构造函数继承中的构造函数 3-2当声明派生类的对象时,当声明派生类的对象时,Derived obj;它将会首先调用基类的构造函数,然后调用派生类的构造函数基类构造函数是在派生类构造函数之后指基类构造函数是在派生类构造函数之后指定的,使用冒号分隔定的,使用冒号分隔Derived():Base()2424继承中的构造函数继承中的构造函数 3-3在派生类的构造函数调用中显式选择基类在派生类的构造函数调用中显式选择基类的构

9、造函数的构造函数Derived obj1(20);调用基类中的相应构造函数Derived(int c):Base(c);2525继承中的继承中的析构析构函数函数调用顺序与构造函数的调用顺序相反调用顺序与构造函数的调用顺序相反首先调用派生类的析构函数,然后调用基首先调用派生类的析构函数,然后调用基类的析构函数类的析构函数只有派生类的构造函数通过动态内存管理分配了内存空间时才需要定义析构函数如果派生类的构造函数没有动态内存分配,那么派生类的析构函数可以是一个空函数2626调用成员函数调用成员函数 2-1派生类的成员函数可以和基类中的成员函派生类的成员函数可以和基类中的成员函数同名数同名用基类的对象

10、调用函数时,将调用基类的函数使用派生类的对象时,将调用派生类的函数派生类的成员函数要调用基类的同名函数,派生类的成员函数要调用基类的同名函数,必须使用作用域解析操作符必须使用作用域解析操作符2727调用成员函数调用成员函数 2-2class Baseprotected:int ss;public:Base();Base(int a)ss=a;int func()return ss;class Derived:public Base public:Derived();Derived(int b)ss=b;int func()return Base:func();void main()Base b1(10);/基类的对象基类的对象 b1.func();/调用基类的调用基类的func()Derived a1;/派生类的对象派生类的对象 a1.func();/调用派生类的调用派生类的func()2828函数函数覆盖覆盖派生类的函数覆盖基类的同名函数派生类的函数覆盖基类的同名函数通过派生类的对象调用时,执行派生类的函数用基类的对象调用时,执行基类的函数2929总结总结继承继承访问控制访问控制继承中的构造函数和析构函数继承中的构造函数和析构函数函数覆盖函数覆盖3030

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁