#include <iostream>
using namespace std;
class Parent
{
public:
virtual void say()
{
cout << "I'm a parent!" << endl;
}
};
class Child : public Parent
{
public:
virtual void say()
{
cout << "I'm a child!" << endl;
}
};
int main()
{
Child c;
Parent p = c;
p.say();
cout << "Hello World!" << endl;
return 0;
}
此代码输出到控制台:
I'm a parent!
Hello World!
是否可以从基类变量调用覆盖函数?(即显示I'm a child!)如果没有,除了使用指针之外,还有其他方法可以调用它吗?
能。但仅为此您需要使用链接:
因此,正如您所写的那样-您得到一个对象
Parent(带有切片),并且相应地调用了它的方法-没有Child.