在下面的例子中,我有一個純虛擬方法(又名FUN1)和一個普通方法(又名FUN2)的抽象類。我可以重載基類中的純虛方法嗎?
#include <iostream>
class A
{
public:
virtual void fun(int i) = 0; // FUN1
void fun() { this->fun(123); } // FUN2
};
class B : public A
{
public:
virtual void fun(int i) { std::cerr << i << std::endl; }
};
int main(int,char**)
{
B b;
b.fun();
}
爲什麼我不能在派生類上調用FUN2?克++給出一個錯誤:
main.cpp:19:8: error: no matching function for call to ‘B::fun()’
編輯:注意,Overload of pure virtual function問題是不同的。我不想重寫方法。
[純虛函數的重載]的可能重複(http://stackoverflow.com/questions/15827632/overload-of-pure-virtual-function) – Axalo