请参考以下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
简单地从继承display
函数A
。因为,它是虚拟的,因此B
可以将行为改写为不同的行为(即,如果需要不同的实现,则可以执行该实现,否则可以继承其继承的内容)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句