c++基础之虚拟继承,虚函数virtual

父类指针指向子类对象
可以将父类指针指向一个子类的对象,这是完全允许的。

//左侧为Tree*,右侧为AppleTree*
Tree* p=new AppleTree();

从语法本质上来讲,子类对象的前半部分就是父类,因而可以将子类对象的指针直接转化为父类。

问题:考虑以下情况:
Parent* p=new Child();
p->Test();
那么,此时调用的Test()是父类的还是子类的?
调用者的初衷:因为p指向的是对象是子类对象,所以应该调用子类的Test()。但是,上述实例化调用的是父类的Test。

当一个成员函数需要子类重写,那么在父类应该将其声明为virtual。(有时将声明为virtual的函数为“虚函数”)
例如:

class Parent
{
public:
      virtual void Test();
};

virtual本身表明该函数即将被子类重写。

猜你喜欢

转载自blog.csdn.net/u012288722/article/details/78397504