下面的代碼段工作正常:虛函數和繼承在C++
#include <iostream>
#include <string>
using namespace std;
class HelpInterface {
public:
void getHelp();
};
class Applicaiton : public HelpInterface {
public:
void getHelp() {
cout << "General help";
}
};
int main(void) {
Applicaiton applicaiton;
applicaiton.getHelp();
}
請在幫助界面類getHelp功能虛擬,我會得到一個鏈接錯誤:
class HelpInterface {
public:
virtual void getHelp();
};
如果我做的getHelp的空實現,如下面的東西將再次工作:
class HelpInterface {
public:
virtual void getHelp() {};
};
有人可以幫我理解nd爲什麼虛擬引發鏈接器錯誤,除非我在基類中有getHelp的實現,並且爲什麼沒有實現的非虛函數工作得很好?在這個例子中,基本函數永遠不會被調用。
無法重現。 http://ideone.com/NrAvM1 – songyuanyao
不知道爲什麼,但虛擬關鍵字不應導致鏈接器錯誤。此代碼的工作,並編制http://coliru.stacked-crooked.com/a/e64d407a206d2979 – Krypton
@songyuanyao 不爲我工作的代碼,如果我使用: 類幫助界面{ 市民: 虛擬無效getHelp (); }; – MrAliB