【发布时间】:2010-11-12 11:11:08
【问题描述】:
可能的重复:
C++ : implications of making a method virtual
Why is 'virtual' optional for overridden methods in derived classes?
我想知道,在以下情况下记录的行为是什么:
你有
class A
{
virtual void A()
{
cout << "Virtual A"<<endl;
}
void test_A()
{
A();
}
}
class B: public A
{
void A()
{
cout << "Non-virtual A in derived class"<<endl;
}
void test_B()
{
A();
}
}
A a; B b;
a.test_A();
b.test_A();
b.test_B();
根据 C++ 标准它应该做什么,为什么? GCC 像 B::A 一样工作,也是虚拟的。
当您在派生类中用非虚拟方法覆盖虚拟方法时,一般应该发生什么?
【问题讨论】:
-
你的代码shouldn't compile.
标签: c++ inheritance virtual