下面的代碼的格式:如何實現純虛擬析構函數?
class C
{
public:
C();
virtual ~C() = 0;
};
class D : public C
{
public:
D();
~D();
};
C::C(){
}
C::~C(){
}
D::D(){
}
D::~D(){
}
int main(){
C *c = new C();
D *d = new D();
return 0;
}
當我嘗試實例c
我得到以下錯誤:
1>c:\main.cpp(59): error C2259: 'C' : cannot instantiate abstract class
我知道我不能調用虛擬析構函數,但也有一些是可怕的我不瞭解這些概念。有人能解釋我嗎?
您不能實例化一個具有純虛擬方法的類。 –
如果你想實例化'C',你不應該有任何純函數。你確定你需要你的析構函數是純粹的嗎? – chris
可能的重複http://stackoverflow.com/questions/630950/pure-virtual-destructor-in-c?rq=1 –