可能重複:
C++ : implications of making a method virtual
Why is 'virtual' optional for overridden methods in derived classes?C++:派生類和虛擬方法
我不知道,什麼是在以下情況下記錄的行爲:
你有
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一樣也是虛擬的。
當你在派生類中通過非虛擬方法覆蓋虛擬方法時,通常會發生什麼?
您的代碼[不應編譯](HTTP: //ideone.com/gI9bI)。 – 2010-11-12 11:16:11
我認爲這也是答案在這裏:http://stackoverflow.com/questions/2963965/why-is-virtual-optional-for-overridden-methods-in-derived-classes – mkj 2010-11-12 11:18:10