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

来源:互联网 发布:如何提高淘宝信誉等级 编辑:程序博客网 时间:2024/05/12 23:35
  类型兼容性原则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替。通过公有
  继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际具备了
  基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容原则中所指的替代包
  括以下情况:
    子类对象可以当作父类对象使用
    子类对象可以直接赋值给父类对象
    父类指针可以直接指向子类对象
    父类引用可以直接引用子类对象
  在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类中继承的成员。
  类型兼容性原则是多态的重要基础之一。


  总结:子类就是特殊的父类(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;
}
0 0
原创粉丝点击