C++派生类与基类对象赋值情况

一 、普通赋值 (同名隐藏)

子类对象调用和父类相同的函数名,该父类的函数名会被隐藏,只会调用子类的函数。

Class A

{

public:

  void show();

  void show(int);

}

Class B : public A

{

public :

  void show();

  void printf();

}

int main()

{

  B b;

  b.show();

  a.show();         //这时候子类已经隐藏父类的方法,父类不能在调用自己的函数

  a.show(0)       //同上

}

父类的引用或指针被子类对象的对象或地址赋值后,它会调用父类自己相应的方法

二、子类对象地址给父类指针赋值

通过子类的对象的地址给父类的指针赋值----->父类指针只能调用子类中从父类继承的函数或者变量

  int main()

  {

    A * a ;

    B b;

    a = &b;  

    a->show();           

    a->printf();           //这个是错误的调用,不能调用子类的函数方法

  }

三 、子类对象给父类的引用赋值

   父类的引用只能访问由子类继承父类的函数或者变量  

  int main()

  {

    A  &a;

    B b;

    a = b;

    a.show();

    a.list();          //这个引用是错误的  

  }

原文地址:https://www.cnblogs.com/liunx1109/p/9613556.html