比方說,我們有:虛擬函數重載
Class A
{
public:
virtual void print(){ std::cout<<" A "<<endl; }
}
Class B : public A
{
public:
virtual void print(int x){ std::cout<<" B "<<endl;}
}
我認爲,在打印功能將隱藏A類功能打印的B級定義,但下面的代碼工作,並打印「A」
int main()
{
A * a = new B;
a->print();
return 0;
}
如果我寫這樣它不工作的主要功能:
int main()
{
B b;
b.print();
return 0;
}
我想要什麼到k現在是...在我的第一個main()示例中,我有一個調用print()的B對象...應該然後print()被隱藏,並且在第二個main()示例中有一個錯誤
你有一個指向'A'的指針,所以你得到'A'的接口。 – juanchopanza
但我有一個B對象,並且該函數是虛擬的... – dragosb
重載發生在這裏,因爲方法簽名是不同的。您*不*重寫相同的虛擬功能。 – greatwolf