C++:继承(2)——public继承的赋值兼容规则(基类指针指向子类对象)

public继承 是一个接口继承,保持is-a原则,每个父类可用的成员对子类也可用,因为每个子类对象也都是一个父类对象。
protetced继承 / private继承 是一个实现继承,基类的部分成员并非完全成为子类接口的一部分,是 has-a 的关系原则。
https://blog.csdn.net/lixungogogo/article/details/51121164

public继承派生类与基类的关系

赋值兼容规则

派生类和基类之间的特殊关系为:

  • 派生类对象可以使用基类的方法,条件是基类的方法是public的
  • 基类指针可以在不进行显示类型转换的情况下指向派生类对象(赋值兼容规则
  • 基类引用可以在不进行显示类型转换的情况下引用派生类对象(赋值兼容规则
  • 基类指针或引用只能用于调用基类的方法,不能用基类指针或引用调用派生类的成员及方法

总结:在公有继承下,派生类对象可以完全替代基类对象,这是接口继承的初衷;对于基类对象可以调用的所有方法,公有继承派生类对象均可以完成调用(这里基类对象可以调用的所有方法,即基类的public方法,因为protected成员在基类的表现与private相同)

发布了7 篇原创文章 · 获赞 1 · 访问量 211

猜你喜欢

转载自blog.csdn.net/weixin_41442027/article/details/105582467