我C++
代碼如下:我可以在繼承中只覆蓋一種方法嗎?
#include<iostream>
using namespace std;
class A
{
public:
virtual void f(int i)
{
cout << "A's f(int)!" << endl;
}
void f(int i, int j)
{
cout << "A's f(int, int)!" << endl;
}
};
class B : public A
{
public:
virtual void f(int i)
{
cout << "B's f(int)!" << endl;
}
};
int main()
{
B b;
b.f(1,2);
return 0;
}
在編譯過程中,我得到:
g++ -std=c++11 file.cpp
file.cpp: In function ‘int main()’:
file.cpp:29:9: error: no matching function for call to ‘B::f(int, int)’
file.cpp:29:9: note: candidate is:
file.cpp:20:16: note: virtual void B::f(int)
file.cpp:20:16: note: candidate expects 1 argument, 2 provided
當我嘗試後B的F(INT)使用覆蓋,我得到了同樣的錯誤。
是否有可能在C++中只覆蓋1個方法?我一直在尋找使用override
的代碼示例,這些代碼將在我的機器上編譯並且還沒有找到。
[虛方法導致派生類中的編譯錯誤]的可能重複(http://stackoverflow.com/questions/7274723/virtual-method-causes-compilation-error-in-derived-class) – 2013-03-16 15:37:17
不,對不起,那是另一個問題。 – 2013-03-16 15:38:27
[C++:隱藏規則背後的基本原理]的可能重複(http://stackoverflow.com/questions/4837399/c-rationale-behind-hiding-rule) – Angew 2013-03-16 15:50:15