1、赋值兼容规则
在需要基类对象的任何地方,都可以使用公有派生类对象来替代。
公有派生类具有基类的全部功能,凡是基类能够实现的功能,公有派生类都能实现。可以将派生类对象的值赋给基类对象,在用到基类对象的时候,可以用其派生类对象代替。
前提 —— 必须是公有继承。
2、赋值
(1) 可以用派生类对象给赋值给基类对象。
(2) 可以用派生类对象来初始化基类对象的引用。
(3) 派生类对象的地址可以赋给基类对象的指针。
class Base {
public:
int i;
Base(int x) { i=x; }
void disp(){ cout<<"Base "<<i<<endl; }
};
class Derived : public Base {
public:
Derived(int x):Base(x){ };
void disp()
{ cout<<"Derived "<<i<<endl;}
};
int main()
{
Base b1(11);
Derived d1(22);
b1 = d1; 基类对象 = 派生类对象
b1.disp(); // Base 22
Derived d2(33);
Base &b2 = d2; 基类引用 = 派生类对象
b2.disp(); // Base 33
Derived d3(44);
Base *b3 = &d3; 基类指针 = 派生类对象地址
b3->disp(); // Base 44
return 0;
}