继承与派生 (2)精选文档.ppt

上传人:石*** 文档编号:44712930 上传时间:2022-09-22 格式:PPT 页数:60 大小:3.75MB
返回 下载 相关 举报
继承与派生 (2)精选文档.ppt_第1页
第1页 / 共60页
继承与派生 (2)精选文档.ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

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

1、继承与派生本讲稿第一页,共六十页 面向对象程序的面向对象程序的4 4个主要特点:个主要特点:抽象抽象-类是对象的抽象,对象是类的具体化。类是对象的抽象,对象是类的具体化。封装封装-数据与操作封装在一个对象中;数据与操作封装在一个对象中;对象中某些数据对外隐蔽。对象中某些数据对外隐蔽。继承继承-“软件重用软件重用”。多态性多态性-由继承产生不同的类,其对象对同一由继承产生不同的类,其对象对同一 个消息作出的不同反应。个消息作出的不同反应。复习:复习:引入继承机制的作用引入继承机制的作用本讲稿第二页,共六十页继承:继承:保持已有类的特性而构造新类的过程,它是类之保持已有类的特性而构造新类的过程,它

2、是类之 间定义的一种重要关系(共性)。间定义的一种重要关系(共性)。派生:派生:是在已有类的基础上新增自己的特性而产生新类是在已有类的基础上新增自己的特性而产生新类 的过程(个性)。的过程(个性)。基类(或父类)基类(或父类):被继承的已存在的类。被继承的已存在的类。派生类(或子类):派生类(或子类):派生出的新类。派生出的新类。5.1 5.1 继承与派生的概念继承与派生的概念 本讲稿第三页,共六十页 继承与派生的例子:继承与派生的例子:不具有对称性不具有对称性 不是所有植物都属于蕨类不是所有植物都属于蕨类传递性传递性 高等植物、蕨类植物、芒萁都是植物,具有植物的共同特征高等植物、蕨类植物、芒

3、萁都是植物,具有植物的共同特征 植物植物 低等植物低等植物高等植物高等植物藻类藻类菌类菌类地衣类地衣类苔藓类苔藓类蕨类蕨类裸子类裸子类被子类被子类地地钱钱小小金金发发草草毛毛蕨蕨芒芒萁萁杉杉木木柏柏木木荔荔枝枝橘橘子子本讲稿第四页,共六十页AB1B2C1C2C3B1,B2 的基类的基类A 的派生类的派生类C1,C2,C3 的基类的基类A 的派生类(的派生类(单继承单继承)C3的基类的基类B1,B2 的派生类(的派生类(多继承多继承)B1 的派生类的派生类5.1 5.1 继承与派生的概念继承与派生的概念 单继承:单继承:一个派生类只从一个基类派生。一个派生类只从一个基类派生。多继承:多继承:一个

4、派生类可以从两个或多个基类派生。一个派生类可以从两个或多个基类派生。基类与派生类的关系:基类与派生类的关系:派生类是基类的具体化,而基类则是派生类的抽象。派生类是基类的具体化,而基类则是派生类的抽象。本讲稿第五页,共六十页5.2 5.2 派生类的声明方式派生类的声明方式 声明基类的格式:声明基类的格式:class class 派生类名派生类名 声明派生类的格式:声明派生类的格式:class class 派生类名派生类名 :继承方式继承方式 基类名基类名 新增加新增加的的数据成员和成员函数声明数据成员和成员函数声明 ;protected publicprivate本讲稿第六页,共六十页 基类继承

5、过来的成员(基类继承过来的成员(共性共性)派生类中的成员派生类中的成员 自己增加的成员(自己增加的成员(个性个性)5.3 5.3 派生类的构成派生类的构成 新增加的新增加的成员成员派生类将基类除构造派生类将基类除构造函数和析构函数外的函数和析构函数外的所有成员接收过来。所有成员接收过来。本讲稿第七页,共六十页派生类中包含了基类成员和派生类成员,就产生了这两部分成员派生类中包含了基类成员和派生类成员,就产生了这两部分成员的关系和访问属性的问题。的关系和访问属性的问题。5.4.1 5.4.1 派生类成员的访问属性派生类成员的访问属性派生类的继承方式派生类的继承方式 基类成员的访问属性基类成员的访问

6、属性决定派生类访决定派生类访问属性因素问属性因素本讲稿第八页,共六十页成员的访问属性(复习)成员的访问属性(复习)私有成员私有成员(private)(private):可以被类自身的成员和友元访问,但不能被:可以被类自身的成员和友元访问,但不能被其他任何类和任何普通函数访问。其他任何类和任何普通函数访问。公有成员公有成员(public)(public):可以被任何普通函数和任何类的成员函:可以被任何普通函数和任何类的成员函数访问。数访问。保护成员保护成员(protected)(protected):可以被类自身的成员和友元访问外。:可以被类自身的成员和友元访问外。三种继承方式:三种继承方式:-

7、公有继承公有继承 -私有继承私有继承 -保护继承保护继承本讲稿第九页,共六十页5.2.1 访问控制1.1.公有继承公有继承public 成员成员 public 成员成员protected 成员成员 protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可直接访问不可直接访问基类的基类的publicpublic和和protectedprotected成员的访问属性在派生类中保持不变,成员的访问属性在派生类中保持不变,但基类的但基类的privateprivate成员不可直接访问。成员不可直接访问。本讲稿第

8、十页,共六十页公用继承示例公用继承示例:错误,错误,numnum在基类中为私有成员,在派生类在基类中为私有成员,在派生类中不可直接访问。中不可直接访问。本讲稿第十一页,共六十页公用继承示例公用继承示例:display();本讲稿第十二页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y p

9、rotected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制本讲稿第十三页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class

10、 B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制class Aclass B:public A本讲稿第十四

11、页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.pu

12、t_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制class Aclass B:public A保护数据成员保护数据成员在类层次中可见在类层次中可见本讲稿第十五页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()retu

13、rn s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制objA.yobjA.xobjAx y 本讲稿第十六页,共六十页#includeclass A public:void get

14、_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.ge

15、t_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 本讲稿第十七页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A obj

16、A;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制对对 objA 的的数据成员操作数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 本讲稿第十八页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout

17、x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1

18、 访问控制调用基类调用基类A成员函数成员函数对对 objB 的数据成员操作的数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 本讲稿第十九页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main

19、()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 调用基类调用基类A成员函数成员函数对对 objB 的数据成员操作的数据成员操作本讲稿第二十页,共六十页#includeclass A public:void get_XY()cou

20、t x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()end

21、l;公有继承的测试公有继承的测试 1 5.2.1 访问控制调用派生类调用派生类B成员函数成员函数对对 objB 的数据成员操作的数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 本讲稿第二十一页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:public A public:int get_S()return s;void make_S()s=x*y;/使用基类数据成员使用基类数据成员x,

22、y protected:int s;void main()A objA;B objB;cout It is object_A:n;objA.get_XY();objA.put_XY();cout It is object_B:n;objB.get_XY();objB.make_S();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 调用派生类调用派生类B成员函数成员函数对对 objB 的数据成员操作的数据成员操作本讲稿第二十二页,共六十页#includec

23、lass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;B b;b.addX();b.addY();cout a.x=a.out()endl;cout b.x=b.out()endl;cout b.y=b.show()endl;公有继承的测试公有继承的测试 2 class B:public Aclass A a.x5.2.1 访问控制

24、本讲稿第二十三页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;B b;b.addX();b.addY();cout a.x=a.out()endl;cout b.x=b.out()endl;cout b.y=b.show()endl;公有继承的测试公有继承的测试 2 class B:public

25、Aclass A b.xa.xb.y5.2.1 访问控制本讲稿第二十四页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()endl;cout b.y=b.show()endl;clas

26、s B:public Aclass A b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第二十五页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()en

27、dl;cout b.y=b.show()endl;class B:public Aclass A 调用构造函数调用构造函数对数据成员赋值对数据成员赋值1b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第二十六页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout

28、a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:public Aclass A 创建派生类对象创建派生类对象调用基类构造函数调用基类构造函数 派生类构造函数派生类构造函数b.x=1 b.y=1111 1b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第二十七页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:

29、public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:public Aclass A 调用基类公有成员函数调用基类公有成员函数b.x+112 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第二十八页,共六十页#includeclass A public:A()

30、x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:public Aclass A 调用派生类公有成员函数调用派生类公有成员函数b.y+122 2b.xa.xb.y5.2.1 访

31、问控制 公有继承的测试公有继承的测试 2 本讲稿第二十九页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.addY();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:pub

32、lic Aclass A 调用基类函数调用基类函数返回返回 b.x 的值的值122 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第三十页,共六十页#includeclass A public:A()x=1;int out()return x;void addX()x+;private:int x;class B:public A public:B()y=1;int show()return y;void addY()y+;private:int y;void main()A a;cout a.x=a.out()endl;B b;b.addX();b.add

33、Y();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:public Aclass A 调用派生类成员函数调用派生类成员函数返回返回 b.y 的值的值122 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 本讲稿第三十一页,共六十页5.2.1 访问控制public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可直接访问不可直接访问private 成员成员private 成员成员2.2.私有继承私有继承基

34、类的基类的publicpublic和和protectedprotected成员都以成员都以privateprivate身份出现在派生类身份出现在派生类中,但基类的中,但基类的privateprivate成员不可直接访问。成员不可直接访问。本讲稿第三十二页,共六十页私有继承示例私有继承示例:错误,私有基类中的错误,私有基类中的displaydisplay函数在派生类中为私有函数。函数在派生类中为私有函数。本讲稿第三十三页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:

35、int x,y;class B:private A public:int get_S()return s;void make_S()get_XY();s=x*y;private:int s;void main()B objB;cout It is object_B:n;objB.make_S();cout S=objB.get_S()endl;私有继承的测试私有继承的测试 objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制class B:private Aclass A 本讲稿第三十四页,共六十页#includeclass A public:void get

36、_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:private A public:int get_S()return s;void make_S()get_XY();s=x*y;private:int s;void main()B objB;cout It is object_B:n;objB.make_S();cout S=objB.get_S()endl;objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 class B:private

37、Aclass A 本讲稿第三十五页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:private A public:int get_S()return s;void make_S()get_XY();s=x*y;private:int s;void main()B objB;cout It is object_B:n;objB.make_S();cout S=objB.get_S()endl;调用基类成员函数调用基类成员函数objB.

38、sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 class B:private Aclass A 本讲稿第三十六页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:private A public:int get_S()return s;void make_S()get_XY();s=x*y;private:int s;void main()B objB;cout It is o

39、bject_B:n;objB.make_S();cout S=objB.get_S()endl;objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 class B:private Aclass A 本讲稿第三十七页,共六十页#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected:int x,y;class B:private A public:int get_S()return s;void make_S()get_XY

40、();s=x*y;private:int s;void main()B objB;cout It is object_B:n;objB.make_S();cout S=objB.get_S()endl;class B:private Aclass A objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 访问私有数据成员访问私有数据成员本讲稿第三十八页,共六十页5.2.1 访问控制public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基

41、类派生类派生类不可直接访问不可直接访问protected 成员成员protected 成员成员3.3.保护继承保护继承基类的基类的publicpublic和和protectedprotected成员都以成员都以protectedprotected身份出现在派生类中,身份出现在派生类中,但基类的但基类的privateprivate成员不可直接访问。成员不可直接访问。本讲稿第三十九页,共六十页保护继承示例保护继承示例:错误,保护基类中的错误,保护基类中的displaydisplay函函数在派生类中为保护成员函数,数在派生类中为保护成员函数,类外不可直接调用。类外不可直接调用。正确,引用基类的保护正

42、确,引用基类的保护成员成员numnum。本讲稿第四十页,共六十页 protectprotect的特点与作用:的特点与作用:对建立其所在类对象的模块来说,它与对建立其所在类对象的模块来说,它与 private private 成员的成员的性质相同。如果基类只进行了一次派生,则保护继承和性质相同。如果基类只进行了一次派生,则保护继承和私有继承的功能完全相同。私有继承的功能完全相同。对于其派生类来说,它与对于其派生类来说,它与 public public 成员的性质相同。成员的性质相同。保护继承可以进一步派生,而私有继承则不可以,保护继承可以进一步派生,而私有继承则不可以,两者具有实质性差别。两者具

43、有实质性差别。既实现了数据隐藏,又方便继承,实现代码重用。既实现了数据隐藏,又方便继承,实现代码重用。本讲稿第四十一页,共六十页基类成员与派生类成员的访问属性:基类成员与派生类成员的访问属性:继承继承方式方式基类成员特性基类成员特性派生类成员特性派生类成员特性派生类对象访问派生类对象访问公有公有继承继承publicpublicpublicpublic可直接访问可直接访问protectedprotectedprotectedprotected不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问私有私有继承继承publicpublicprivatepriva

44、te不可直接访问不可直接访问protectedprotectedprivateprivate不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问保护保护继承继承publicpublicprotectedprotected不可直接访问不可直接访问protectedprotectedprotectedprotected不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问本讲稿第四十二页,共六十页类类A A 为基类,类为基类,类B B 是类是类A A的派生类,类的派生类,类C C是类是类B B的派生类,则类的派生类,则类

45、C C也是类也是类A A的派生类。类的派生类。类B B是类是类A A的直接派生类,类的直接派生类,类C C 是类是类A A 的间接派生类。类的间接派生类。类 A A是类是类B B的直接基类,是类的直接基类,是类C C的间接基类。的间接基类。多级派生各成员访问属性仍满足以上原则。多级派生各成员访问属性仍满足以上原则。5.4.2 5.4.2 多级派生时的访问属性多级派生时的访问属性 本讲稿第四十三页,共六十页多级继承示例多级继承示例:ia ia fafa ja ja kaka fb1fb1 fb2fb2 mbmbfc1fc1 ncnc类类A A类类B B类类C C公有公有私有私有公有公有不可不可访

46、问访问保护保护保护保护保护保护私有私有保护保护公有公有保护保护不可不可访问访问公有公有保护保护私有私有保护保护保护保护保护保护保护保护不可不可访问访问各个成员在不同类中访问属性:各个成员在不同类中访问属性:本讲稿第四十四页,共六十页如如果果派派生生类类定定义义了了与与基基类类同同名名的的成成员员,在在派派生生类类中中访访问问同同名名成成员员时时屏屏蔽蔽了了基基类类的的同同名名成成员员。在在派派生生类类中中使使用用基基类类的的同名成员,显式地使用类名限定符。同名成员,显式地使用类名限定符。格式:格式:类名类名 :成员成员 重名成员包括:重名成员包括:重名数据成员重名数据成员和和重名成员函数重名成

47、员函数。5.2.2 重名成员5.4.2 5.4.2 重名成员重名成员本讲稿第四十五页,共六十页例:例:class base public:int a,b;class derived:public base public:int b,c;void f()derived d;d.a=1;d.base:b=2;d.b=3;d.c=4;5.2.2 重名成员1.1.重名数据成员重名数据成员base a b derived a b b bc c 本讲稿第四十六页,共六十页例:例:class base public:int a,b;class derived:public base public:int b

48、,c;void f()derived d;d.a=1;d.base:b=2;d.b=3;d.c=4;5.2.2 重名成员1.1.重名数据成员重名数据成员base a b derived d dderived a b b bc c 本讲稿第四十七页,共六十页例:例:class base public:int a,b;class derived:public base public:int b,c;void f()derived d;d.a=1;d.base:b=2;d.b=3;d.c=4;5.2.2 重名成员base a b 1derived d dderived a b b bc c 访问从访

49、问从base 类继承类继承的数据成员的数据成员a1.1.重名数据成员重名数据成员本讲稿第四十八页,共六十页例:例:class base public:int a,b;class derived:public base public:int b,c;void f()derived d;d.a=1;d.base:b=2;d.b=3;d.c=4;5.2.2 重名成员访问从访问从base 类继承类继承的的 bbase a b 21derived d dderived a b b bc c 1.1.重名数据成员重名数据成员本讲稿第四十九页,共六十页例:例:class base public:int a,

50、b;class derived:public base public:int b,c;void f()derived d;d.a=1;d.base:b=2;d.b=3;d.c=4;5.2.2 重名成员访问访问derived 类定义类定义的数据成员的数据成员bbase a b 321derived d dderived a b b bc c 1.1.重名数据成员重名数据成员本讲稿第五十页,共六十页例:例:class base public:int a,b;class derived:public base public:int b,c;void f()derived d;d.a=1;d.base

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

当前位置:首页 > 教育专区 > 大学资料

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

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