【发布时间】:2015-04-12 05:22:09
【问题描述】:
请参考以下C++代码:
#include <iostream>
class A {
public:
virtual ~A() {}
virtual void display() {
std::cout << "Display A" << std::endl;
}
};
class B : public A {
// ! NO 'display()' function in this class.
};
class C : public B {
public:
void display() {
std::cout << "Display C" << std::endl;
B::display();
}
};
int main(void) {
A* ptr = new C();
ptr->display();
delete ptr;
return 0;
}
这是这个程序的输出:
Display C
Display A
我希望这个程序有一个编译错误,因为 B::display() 没有定义。
有人能解释一下这段代码的行为吗?
非常感谢您的宝贵时间!
【问题讨论】:
-
B从A继承display实现 -
完美。这就说得通了。谢谢!
标签: c++ scope polymorphism virtual vtable