考慮下面的代碼:虛方法會導致編譯錯誤,在派生類
#include <iostream>
using namespace std;
class A
{
public:
virtual int f() {cout <<"A:: f()\n"; return 1;}
virtual void f(int) {cout <<"A:: f(int)\n";}
virtual void g() {cout <<"A::g()\n";}
};
class B3 : public A
{
public:
void f() {cout <<"B3::f()\n";}
};
int main()
{
return 0;
}
它產生以下錯誤:
..\main.cpp:17: error: conflicting return type specified for 'virtual void B3::f()'
..\main.cpp:9: error: overriding 'virtual int A::f()'
但爲什麼呢?在最壞的情況下,我以爲我有一個隱藏的情況下,而是我得到關於的virtual int f() {cout <<"A:: f()\n"; return 1;}
感謝編譯錯誤,羅南
您不需要不同的參數列表來隱藏基本功能。 –
@Luchian,是的,你也可以使用不同的常量來隱藏。這是你想到的嗎?有沒有其他的方法來隱藏虛擬功能? – eran