我有一個類中聲明如下:對C++中的非純虛擬類感到困惑,它們的用途是什麼?
class TestFoo {
public:
TestFoo();
virtual void virtualFunction();
void nonVirtualFunction();
};
,我嘗試實施這種方式
TestFoo::TestFoo(){}
void TestFoo::nonVirtualFunction(){}
其上編譯返回錯誤:
undefined reference to vtable for TestFoo
我想:
TestFoo::TestFoo(){}
void TestFoo::nonVirtualFunction(){}
void TestFoo::virtualFunction(){}
其編譯好的這對解答這些職位是一致的:
什麼讓我困惑的是,我想聲明一個虛函數的整點是,我不需要來定義它。在這個例子中,我不打算創建TestFoo的任何實例,而是創建從TestFoo繼承的(具體)類的實例。但是,我仍然想爲TestFoo的每個子類定義函數nonVirtualFunction。
我沒有正確的做對嗎?
謝謝!
其實你必須定義一個虛擬析構函數,否則你可能會得到這個「未定義的引用vtable」的錯誤。 – Arne 2013-03-15 08:18:55
@Arne爲什麼?_____ – 2013-03-15 08:19:47
@阿爾納可以肯定這是沒有根據的。 – 2013-03-15 08:20:27