【发布时间】:2012-04-26 01:09:02
【问题描述】:
为什么基类对象必须是引用才能调用派生的虚函数?
#include<iostream>
using namespace std;
class A {
public:
virtual void print() { cout << "Hello 1" << endl; }
};
class B : public A {
public:
int x;
void print() { cout << "Hello " << x << endl; }
};
void main(){
B obj1;
A &obj2 = obj1;
A obj3 = obj1; // Why it is different from obj2
obj1.x = 2;
obj1.print();
obj2.print();
obj3.print(); // ?
}
【问题讨论】:
-
因为多态只适用于引用和指针。
-
“为什么 X 需要 Y?” “因为 Y 是 X 的要求。”不是很有帮助的评论
标签: c++ class reference overriding virtual