c++继承中的类型兼容性原则

本文介绍了类型兼容性原则,即在需要基类对象的地方可以使用公有派生类的对象代替。文章通过示例代码展示了如何实现子类对象当作父类对象使用、子类对象赋值给父类对象、父类指针指向子类对象以及父类引用引用子类对象等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  类型兼容性原则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替。通过公有
  继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际具备了
  基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容原则中所指的替代包
  括以下情况:
    子类对象可以当作父类对象使用
    子类对象可以直接赋值给父类对象
    父类指针可以直接指向子类对象
    父类引用可以直接引用子类对象
  在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类中继承的成员。
  类型兼容性原则是多态的重要基础之一。


  总结:子类就是特殊的父类(base *p = &child;)
  #include <iostream>


  using namespace std;


  class Parent()
  {
    public:
      Parent()
      {
        cout << "Parent构造函数" << endl;
      }
      Parent(const Parent &obj)
      {
        cout << "copy构造函数" << endl;
      }
      void printP()
      {
        cout << "Parent" << endl;
      }
    private:
      int a;
  }


  class child : public Parent
  {
    public:
      void printC()
      {
        cout << "child" << endl;
      }
    private:
      int c;
  }


void howToPrint(Parent *base)
{
  base->printP();//父类的成员函数
}


void howToPrint2(Parent &base)
{
  base.printP();//父类的成员函数
}


int main()
{
  Parent p1;
  p1.printP();


  Child c1;
  c1.printC();
  c1.printP();




  //类型兼容性原则
  //1.1 基类指针或引用指向子类对象
  Parent *p = NULL;
  p = &c1;
  p->printP();


  //1.2 指针作为函数参数
  howToPrint(&p1);
  howToPrint(&c1);//将子类对象的指针实例化父类类型的指针参数


  //1.3 引用作为函数参数
  howToPrint2(p1);
  hwoToPrint2(c1);


  //2.1 子类对象初始化父类对象,子类就是特殊的父类
  Parent p3 = c1;
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪流之源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值