我已经声明了一个具有虚拟打印功能的超类,并且子类继承了超类。我创建了一个子类实例并以两种不同的方式分配给超类。
#include <iostream>
using namespace std;
class Super
{
public:
Super(){}
virtual void print()
{
cout << "Super class is printing " << endl;
}
};
class Child: public Super
{
public:
Child(){}
void print()
{
cout << "Child class printing" << endl;
}
};
int main()
{
Child c;
Super s = c;
Super &ss = c;
s.print(); //prints "Super Class is printing
ss.print(); //prints "Child Class is printing
return 0;
}
为什么我们没有从这两个打印调用中得到相同的输出?添加引用如何改变行为?