继承与派生第四章哈尔宾工业大学.ppt

上传人:laozhun 文档编号:2217906 上传时间:2023-02-01 格式:PPT 页数:22 大小:419.51KB
返回 下载 相关 举报
继承与派生第四章哈尔宾工业大学.ppt_第1页
第1页 / 共22页
继承与派生第四章哈尔宾工业大学.ppt_第2页
第2页 / 共22页
继承与派生第四章哈尔宾工业大学.ppt_第3页
第3页 / 共22页
继承与派生第四章哈尔宾工业大学.ppt_第4页
第4页 / 共22页
继承与派生第四章哈尔宾工业大学.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《继承与派生第四章哈尔宾工业大学.ppt》由会员分享,可在线阅读,更多相关《继承与派生第四章哈尔宾工业大学.ppt(22页珍藏版)》请在三一办公上搜索。

1、第四章 继承与派生,吴良杰,Harbin Engineering University,继承与派生的实例,继承与派生的相关概念,继承:保持已有类的特性而构造新类的过程。派生:在已有类的基础上新增自己的特性而产生新类的过程。基类(或父类):被继承的已有类。派生类:派生出的新类。,继承与派生的相关概念,继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造,派生类的声明,声明格式:class 派生类名:继承方式 基类名 派生类新成员声明;,class stupublic:private:char name;int age;,class s

2、tu1:public stupublic:void chose();private:char spec20;,继承的种类,直接基类直接参与新类派生的基类间接基类基类的基类或更高层的基类。单继承只有一个直接基类的继承。多继承同时有多个基类的继承。,继承的过程,1.吸收基类成员接收基类中除构造函数和析构函数之外的所有成员。2.改造基类成员根据继承方式对基类成员进行隐藏3.添加新的成员给派生类定义新的成员,实现新的功能。,派生类对基类成员的访问控制,class A public:void set()void disp()protected:int w;private:float x,y;,class

3、 B:public A public:void dispB()private:int c,d;,void main()B oa;oa.dispB();oa.set();,void dispB()set();disp();w=3;x=4.7;,公有成员和保护成员的访问方式在派生类中保持不变,派生类对基类成员的访问控制,class A public:void set()void disp()protected:int w;private:float x,y;,class B:private A public:void dispB()private:int c,d;,void main()B oa;

4、oa.dispB();oa.set();,void dispB()set();disp();w=3;x=4.7;,公有成员和保护成员的访问方式在派生类中为私有成员,派生类对基类成员的访问控制,class A public:void set()void disp()protected:int w;private:float x,y;,class B:protected A public:void dispB()private:int c,d;,void main()B oa;oa.dispB();oa.set();,void dispB()set();disp();w=3;x=4.7;,公有成员

5、和保护成员的访问方式在派生类中为保护成员,派生类对基类成员的访问控制,1、基类的私有成员:不能以任何方式访问。2、基类的公有成员:公有继承:公有成员 保护继承:保护成员 私有继承:私有成员3、基类的保护成员:公有继承:保护成员 保护继承:保护成员 私有继承:私有成员,派生类的构造函数,派生类构造函数的任务 1)初始化新增数据成员 2)调用基类构造函数,初始化继承来的成员。单继承构造函数形式派生类名:派生类名(形参):基类名(参数表)本类成员初始化赋值语句;形参表:基类所需的形参,本类成员所需的形参,派生类的构造函数,class B public:B()b=0;B(int i)b=i;B()co

6、ut“exit b”;void Print()const coutbendl;private:int b;,class C:public B public:C();C(int i,int j);C();void Print()const;private:int c;,C:C()c=0;C:C(int i,int j):B(i)c=j;C:C()cout“exit c”;void C:Print()B:Print();coutcendl;,派生类的构造函数,多继承时的构造函数派生类名:派生类名(基类1形参,基类2形参,.基类n形参,本类形参):基类名1(参数),基类名2(参数),.基类名n(参数

7、)本类成员初始化赋值语句;,派生类的构造函数,#include class B1 public:B1(int i)cout“B1 iendl;class B2public:B2(int j)coutB2 jendl;class B3public:B3()cout“B3*endl;,派生类的构造函数,class C:public B2,public B1,public B3 public:C(int a,int b,int c,int d,int x,int z):B1(a),B2(b),m(x),k(z)x=c;y=d;cout“C x yendl;private:int x,t,y;B1 m

8、;B3 n;B2 k;void main()C obj(1,2,3,4,5,6);,派生类的构造函数,构造函数的调用次序1.调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。2.调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。3.派生类的构造函数体中的内容。,派生类的拷贝构造函数,1.无拷贝构造函数 编译器将自动调用基类的缺省拷贝构造函数。2.有拷贝构造函数 需要为基类相应的拷贝构造函数传递参数。例如:C:C(C&c1):B(c1),派生类的析构造函数,#include class B1 public:B1(int i)coutc B1 iendl;B1()coutd B1 endl;class B2public:B2(int j)coutc B2 jendl;B2()coutd B2 endl;class B3public:B3()coutcg B3*endl;B3()coutd B3 endl;,派生类的析构造函数,class C:public B2,public B1,public B3public:C(int a,int b,int c,int d):B1(a),mB2(d),mB1(c),B2(b)private:B1 mB1;B2 mB2;B3 mB3;void main()C obj(1,2,3,4);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号