《继承与派生 (2)精选PPT.ppt》由会员分享,可在线阅读,更多相关《继承与派生 (2)精选PPT.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、继承与派生第1页,此课件共60页哦 面向对象程序的面向对象程序的4 4个主要特点:个主要特点:抽象抽象-类是对象的抽象,对象是类的具体化。类是对象的抽象,对象是类的具体化。封装封装-数据与操作封装在一个对象中;数据与操作封装在一个对象中;对象中某些数据对外隐蔽。对象中某些数据对外隐蔽。继承继承-“软件重用软件重用”。多态性多态性-由继承产生不同的类,其对象对同一由继承产生不同的类,其对象对同一 个消息作出的不同反应。个消息作出的不同反应。复习:复习:引入继承机制的作用引入继承机制的作用第2页,此课件共60页哦继承:继承:保持已有类的特性而构造新类的过程,它是类之保持已有类的特性而构造新类的过程
2、,它是类之 间定义的一种重要关系(共性)。间定义的一种重要关系(共性)。派生:派生:是在已有类的基础上新增自己的特性而产生新类是在已有类的基础上新增自己的特性而产生新类 的过程(个性)。的过程(个性)。基类(或父类)基类(或父类):被继承的已存在的类。被继承的已存在的类。派生类(或子类):派生类(或子类):派生出的新类。派生出的新类。5.1 5.1 继承与派生的概念继承与派生的概念 第3页,此课件共60页哦 继承与派生的例子:继承与派生的例子:不具有对称性不具有对称性 不是所有植物都属于蕨类不是所有植物都属于蕨类传递性传递性 高等植物、蕨类植物、芒萁都是植物,具有植物的共同特征高等植物、蕨类植
3、物、芒萁都是植物,具有植物的共同特征 植物植物 低等植物低等植物高等植物高等植物藻类藻类菌类菌类地衣类地衣类苔藓类苔藓类蕨类蕨类裸子类裸子类被子类被子类地地钱钱小小金金发发草草毛毛蕨蕨芒芒萁萁杉杉木木柏柏木木荔荔枝枝橘橘子子第4页,此课件共60页哦AB1B2C1C2C3B1,B2 的基类的基类A 的派生类的派生类C1,C2,C3 的基类的基类A 的派生类(的派生类(单继承单继承)C3的基类的基类B1,B2 的派生类(的派生类(多继承多继承)B1 的派生类的派生类5.1 5.1 继承与派生的概念继承与派生的概念 单继承:单继承:一个派生类只从一个基类派生。一个派生类只从一个基类派生。多继承:多继
4、承:一个派生类可以从两个或多个基类派生。一个派生类可以从两个或多个基类派生。基类与派生类的关系:基类与派生类的关系:派生类是基类的具体化,而基类则是派生类的抽象。派生类是基类的具体化,而基类则是派生类的抽象。第5页,此课件共60页哦5.2 5.2 派生类的声明方式派生类的声明方式 声明基类的格式:声明基类的格式:class class 派生类名派生类名 声明派生类的格式:声明派生类的格式:class class 派生类名派生类名 :继承方式继承方式 基类名基类名 新增加新增加的的数据成员和成员函数声明数据成员和成员函数声明 ;protected publicprivate第6页,此课件共60页
5、哦 基类继承过来的成员(基类继承过来的成员(共性共性)派生类中的成员派生类中的成员 自己增加的成员(自己增加的成员(个性个性)5.3 5.3 派生类的构成派生类的构成 新增加的新增加的成员成员派生类将基类除构造函派生类将基类除构造函数和析构函数外的所有数和析构函数外的所有成员接收过来。成员接收过来。第7页,此课件共60页哦派生类中包含了基类成员和派生类成员,就产生了这两部分成派生类中包含了基类成员和派生类成员,就产生了这两部分成员的关系和访问属性的问题。员的关系和访问属性的问题。5.4.1 5.4.1 派生类成员的访问属性派生类成员的访问属性派生类的继承方式派生类的继承方式 基类成员的访问属性
6、基类成员的访问属性决定派生类访决定派生类访问属性因素问属性因素第8页,此课件共60页哦成员的访问属性(复习)成员的访问属性(复习)私有成员私有成员(private)(private):可以被类自身的成员和友元访问,但不能:可以被类自身的成员和友元访问,但不能被其他任何类和任何普通函数访问。被其他任何类和任何普通函数访问。公有成员公有成员(public)(public):可以被任何普通函数和任何类的成员函数:可以被任何普通函数和任何类的成员函数访问。访问。保护成员保护成员(protected)(protected):可以被类自身的成员和友元访问外。:可以被类自身的成员和友元访问外。三种继承方式:
7、三种继承方式:-公有继承公有继承 -私有继承私有继承 -保护继承保护继承第9页,此课件共60页哦5.2.1 访问控制1.1.公有继承公有继承public 成员成员 public 成员成员protected 成员成员 protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可直接访问不可直接访问基类的基类的publicpublic和和protectedprotected成员的访问属性在派生类中保持成员的访问属性在派生类中保持不变,但基类的不变,但基类的privateprivate成员不可直接访问。成员不可
8、直接访问。第10页,此课件共60页哦公用继承示例公用继承示例:错误,错误,numnum在基类中为私有成员,在派生在基类中为私有成员,在派生类中不可直接访问。类中不可直接访问。第11页,此课件共60页哦公用继承示例公用继承示例:display();第12页,此课件共60页哦#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;/使用基类数据成员
9、使用基类数据成员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 访问控制第13页,此课件共60页哦#includeclass A public:void get_XY()cout x y;void put_XY()cout x=x ,y=y n;protected
10、: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 访问控制class Aclass B:
11、public A第14页,此课件共60页哦#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.g
12、et_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保护数据成员保护数据成员在类层次中可见在类层次中可见第15页,此课件共60页哦#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
13、: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 访问控制objA.yobjA.xobjAx y 第16页,此课件共60页哦#includeclass
14、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 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
15、();cout S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 第17页,此课件共60页哦#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
16、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 的的数据成员操作数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 第18页,此课件共60页哦#includeclass A public:void get_XY()cout x y
17、;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()endl;公有继
18、承的测试公有继承的测试 1 5.2.1 访问控制调用基类调用基类A成员函数成员函数对对 objB 的数据成员操作的数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 第19页,此课件共60页哦#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 prote
19、cted: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 调用基类调用基类A成员函数成员函数对对 objB 的数据成员操作的数据成员操作第20页,此课件共60页哦#includeclass A pu
20、blic: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 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();c
21、out S=objB.get_S()endl;公有继承的测试公有继承的测试 1 5.2.1 访问控制调用派生类调用派生类B成员函数成员函数对对 objB 的数据成员操作的数据成员操作objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 第21页,此课件共60页哦#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*
22、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 访问控制objB.sobjB.yobjB.xobjBsobjA.yobjA.xobjAx y 调用派生类调用派生类B成员函数成员函数对对 objB 的数据成员操作的数据成员操作第
23、22页,此课件共60页哦#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 A
24、class A a.x5.2.1 访问控制第23页,此课件共60页哦#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;公有继承的测试公有继承
25、的测试 2 class B:public Aclass A b.xa.xb.y5.2.1 访问控制第24页,此课件共60页哦#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
26、b.y=b.show()endl;class B:public Aclass A b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第25页,此课件共60页哦#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
27、();cout b.x=b.out()endl;cout b.y=b.show()endl;class B:public Aclass A 调用构造函数调用构造函数对数据成员赋值对数据成员赋值1b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第26页,此课件共60页哦#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
28、;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=1 b.y=1111 1b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第27页,此课件共60页哦#includeclass A public:A()x=1;int out()return x;void addX()x+;p
29、rivate: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.x+112 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第28页,此课件共60页哦#incl
30、udeclass 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:public Aclass A 调用派生类公有成员函数调用派生类公有成员函数b.y+
31、122 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第29页,此课件共60页哦#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.s
32、how()endl;class B:public Aclass A 调用基类函数调用基类函数返回返回 b.x 的值的值122 2b.xa.xb.y5.2.1 访问控制 公有继承的测试公有继承的测试 2 第30页,此课件共60页哦#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()e
33、ndl;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 访问控制 公有继承的测试公有继承的测试 2 第31页,此课件共60页哦5.2.1 访问控制public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可直接访问不可直接访问private 成员成员pri
34、vate 成员成员2.2.私有继承私有继承基类的基类的publicpublic和和protectedprotected成员都以成员都以privateprivate身份出现在派生身份出现在派生类中,但基类的类中,但基类的privateprivate成员不可直接访问。成员不可直接访问。第32页,此课件共60页哦私有继承示例私有继承示例:错误,私有基类中的错误,私有基类中的displaydisplay函函数在派生类中为私有函数。数在派生类中为私有函数。第33页,此课件共60页哦#includeclass A public:void get_XY()cout x y;void put_XY()cout
35、 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 Aclass A 第34页,此课件共60页哦#includec
36、lass 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.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有
37、继承的测试 class B:private Aclass A 第35页,此课件共60页哦#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
38、;调用基类成员函数调用基类成员函数objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 class B:private Aclass A 第36页,此课件共60页哦#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 mai
39、n()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 第37页,此课件共60页哦#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
40、 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;class B:private Aclass A objB.sobjB.yobjB.xobjBprivate成员成员5.2.1 访问控制私有继承的测试私有继承的测试 访问私有数据成员访问私有数据成员第38页,此课件共60页哦5.2.1 访问控制public 成员成员protected 成员成员private 成员成员public 成员成员protect
41、ed 成员成员private 成员成员基类基类派生类派生类不可直接访问不可直接访问protected 成员成员protected 成员成员3.3.保护继承保护继承基类的基类的publicpublic和和protectedprotected成员都以成员都以protectedprotected身份出现在身份出现在派生类中,但基类的派生类中,但基类的privateprivate成员不可直接访问。成员不可直接访问。第39页,此课件共60页哦保护继承示例保护继承示例:错误,保护基类中的错误,保护基类中的displaydisplay函数函数在派生类中为保护成员函数,类外不在派生类中为保护成员函数,类外不可
42、直接调用。可直接调用。正确,引用基类的保护成正确,引用基类的保护成员员numnum。第40页,此课件共60页哦 protectprotect的特点与作用:的特点与作用:对建立其所在类对象的模块来说,它与对建立其所在类对象的模块来说,它与 private private 成员成员的性质相同。如果基类只进行了一次派生,则保护继的性质相同。如果基类只进行了一次派生,则保护继承和私有继承的功能完全相同。承和私有继承的功能完全相同。对于其派生类来说,它与对于其派生类来说,它与 public public 成员的性质相同。成员的性质相同。保护继承可以进一步派生,而私有继承则不可以,两者具保护继承可以进一步
43、派生,而私有继承则不可以,两者具有实质性差别。有实质性差别。既实现了数据隐藏,又方便继承,实现代码重用。既实现了数据隐藏,又方便继承,实现代码重用。第41页,此课件共60页哦基类成员与派生类成员的访问属性:基类成员与派生类成员的访问属性:继承继承方式方式基类成员特性基类成员特性派生类成员特性派生类成员特性派生类对象访问派生类对象访问公有公有继承继承publicpublicpublicpublic可直接访问可直接访问protectedprotectedprotectedprotected不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问私有私有继承继承p
44、ublicpublicprivateprivate不可直接访问不可直接访问protectedprotectedprivateprivate不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问保护保护继承继承publicpublicprotectedprotected不可直接访问不可直接访问protectedprotectedprotectedprotected不可直接访问不可直接访问privateprivate不可访问不可访问不可直接访问不可直接访问第42页,此课件共60页哦类类A A 为基类,类为基类,类B B 是类是类A A的派生类,类的派生类,类C
45、 C是类是类B B的派生类,则类的派生类,则类C C也是类也是类A A的派生类。类的派生类。类B B是类是类A A的直接派生类,类的直接派生类,类C C 是类是类A A 的间接派生类。的间接派生类。类类 A A是类是类B B的直接基类,是类的直接基类,是类C C的间接基类。的间接基类。多级派生各成员访问属性仍满足以上原则。多级派生各成员访问属性仍满足以上原则。5.4.2 5.4.2 多级派生时的访问属性多级派生时的访问属性 第43页,此课件共60页哦多级继承示例多级继承示例:ia ia fafa ja ja kaka fb1fb1 fb2fb2 mbmbfc1fc1 ncnc类类A A类类B
46、B类类C C公有公有私有私有公有公有不可不可访问访问保护保护保护保护保护保护私有私有保护保护公有公有保护保护不可不可访问访问公有公有保护保护私有私有保护保护保护保护保护保护保护保护不可不可访问访问各个成员在不同类中访问属性:各个成员在不同类中访问属性:第44页,此课件共60页哦如如果果派派生生类类定定义义了了与与基基类类同同名名的的成成员员,在在派派生生类类中中访访问问同同名名成成员员时时屏屏蔽蔽了了基基类类的的同同名名成成员员。在在派派生生类类中中使使用用基基类类的的同名成员,显式地使用类名限定符。同名成员,显式地使用类名限定符。格式:格式:类名类名 :成员成员 重名成员包括:重名成员包括:
47、重名数据成员重名数据成员和和重名成员函数重名成员函数。5.2.2 重名成员5.4.2 5.4.2 重名成员重名成员第45页,此课件共60页哦例:例: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 第46页,此课件共60页哦例:例:class base public:int a,b;class derived:p
48、ublic 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 d dderived a b b bc c 第47页,此课件共60页哦例:例: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 d
49、derived a b b bc c 访问从访问从base 类继承类继承的数据成员的数据成员a1.1.重名数据成员重名数据成员第48页,此课件共60页哦例:例: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.重名数据成员重名数据成员第49页,此课件共60页哦例:例:c
50、lass 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 重名成员访问访问derived 类定义类定义的数据成员的数据成员bbase a b 321derived d dderived a b b bc c 1.1.重名数据成员重名数据成员第50页,此课件共60页哦例:例:class base public:int a,b;class derived:public base public:int b,c;void f