这个赋值兼容原则刚开始看起来确实很奇怪,但是仔细想想这个原则是合理的。
子类继承了父类的所有成员(除了构造函数和析构函数)。因此把子类看作父类是合情合理的。就像是父类是普通人,子类是超人。父类能完成的工作,子类一定能完成。子类能完成的工作,父类不一定能做。
- 派生类的对象可以赋值给基类对象
- 派生类的对象可以初始化基类的引用
- 派生类对象的地址可以赋给指向基类的指针。
父类对象是不能赋值给子类对象。父类是普通人,子类是超人。让普通人完成超人的工作是非常危险的行为。
这个赋值兼容原则刚开始看起来确实很奇怪,但是仔细想想这个原则是合理的。
子类继承了父类的所有成员(除了构造函数和析构函数)。因此把子类看作父类是合情合理的。就像是父类是普通人,子类是超人。父类能完成的工作,子类一定能完成。子类能完成的工作,父类不一定能做。
父类对象是不能赋值给子类对象。父类是普通人,子类是超人。让普通人完成超人的工作是非常危险的行为。