class b public a public return getto void main Bb b setx(2) b sety (3) cout<<X=<<bgetxo<<tY=<<b gety(<<endl cout<<X+Y=<<b getsum(<<endl
class B:public A { public: int getsum() { return x + gety(); } }; void main() { B b; b.setx(2); b.sety(3); cout<<"X="<<b.getx()<<"\tY="<<b.gety()<<endl; cout<<"X + Y = "<<b.getsum()<<endl; }
所谓赋值兼容原则就是,在公有派生的情况下,一个派生类 的对象可以作为基类的对象来使用的地方(在公有派生的情况 每一个派生类的对象都是基类的一个对象-它继承了基 的所有的成员并没有改变其访问权限) 具体的说,有三种情况是可以把一个派生类的对象作为基类对 象来使用的 1.派生的对象可以赋给基类的对象。如:(约定 derived是从类 base公有派生而来的) derived d base b: b=d
所谓赋值兼容原则就是,在公有派生的情况下,一个派生类 的对象可以作为基类的对象来使用的地方(在公有派生的情况 下,每一个派生类的对象都是基类的一个对象----它继承了基 类的所有的成员并没有改变其访问权限)。 具体的说,有三种情况是可以把一个派生类的对象作为基类对 象来使用的: 1.派生的对象可以赋给基类的对象。如:(约定derived是从类 base公有派生而来的) derived d; base b; b=d;
2.派生类的对象可以初始化基类的引用。如: 士 derived d base &br=d 3.派生类的对象的地址可以赋给指向基类的指针。如: derived d base *kpb=&d 在后两种情况下,通过指针或引用只能访问对象d中所继承的 基类成员
2.派生类的对象可以初始化基类的引用。如: derived d ; base &br=d; 3.派生类的对象的地址可以赋给指向基类的指针。如: derived d; base *pb=&d; 在后两种情况下,通过指针或引用只能访问对象d中所继承的 基类成员