15:13:38 例:公有继承(续) void maino i A objA; B ob jB; C ob jC cout<<“ it is object a:”<<end1 cin>objA.x>objA.y;//错,x和y是objA的保护成员 objA. get-XYo; ob jA. put-XY O cout<<“ it is object B:”<<endl; objB.get-XY0;/从类A中继承而来的公有成员函数 objB.make-S0;//不能objB.s=0bjB.x*0bjB.y; objB中的x和y是从基类A中继承而来, //是B类的保护成员 cout<<“S=”<<objB.get-S0<<endl cout<<“ it is object C:”<<endl; objC. get-XY O objC. get-HO ob jC. make-VO cout<<“V=”<objC.getV0<endl;
15:13:38 例:公有继承(续) void main(){ A objA; B objB; C objC; cout << “it is object A:” << endl; cin>>objA.x>>objA.y; //错,x和y是objA的保护成员 objA.get_XY(); objA.put_XY(); cout << “it is object B:” << endl; objB.get_XY(); //从类A中继承而来的公有成员函数 objB.make_S(); //不能objB.s=objB.x * objB.y; //objB中的x和y是从基类A中继承而来, //是B类的保护成员 cout << “S=” << objB.get_S() << endl; cout << “it is object C:” << endl; objC.get_XY(); objC.get_H(); objC.make_V(); cout << “V=” << objC.get_V() << endl; }
15:13:38 私有继承 基类中的保护成员和公有成员全部成为派生类的私有成员 include <iostream> using namespace std class a protected int x, y, public: void get-XY O cout<<‘ Enter two numbers of x,y:"”;cin>>x>〉y;} void put-XY O cout<“x=“<x<“,y=“<y<endl;}
15:13:38 ➢私有继承 基类中的保护成员和公有成员全部成为派生类的私有成员 #include <iostream> using namespace std; class A{ protected: int x,y; public: void get_XY() {cout << “Enter two numbers of x,y:”; cin>>x>>y;} void put_XY() {cout << “x=“ << x << “,y=“ << y << endl;} };
class B: private A C+中默认的继承方式是私有 private 继承,亦即此处也可写成 t 1n public class B.Al int get-so return s void makeS get-XY O;//继承的 get-XY0,本类中成为私有成员函数 S=x*y;//继承而来的x、y,本类的私有成员变量 void maino i B ob jB cout<<“ it is object B:”<<end1 objB.get-XY0;/错, get-XY0现成为0bjB的私有成员 objB. make-SO cout<<“S=“<<objB.get-S0<endl;
15:13:38 class B:private A{ private: int s; public: int get_S(){return s;} void make_S(){ get_XY();//继承的get_XY(),本类中成为私有成员函数 s=x*y; //继承而来的x、y,本类的私有成员变量 } }; void main(){ B objB; cout << “it is object B:” << endl; objB.get_XY(); //错,get_XY()现成为objB的私有成员 objB.make_S(); cout << “S= “ << objB.get_S() << endl; } C++中默认的继承方式是私有 继承,亦即此处也可写成 class B : A{