[英]Can I avoid a pure virtual function with a body in this case
看完這篇文章后,帶有身體的純虛函數的用例? 我的印象是可以避免將純虛函數與主體一起使用,但是在這種情況下我不知道該怎么做:
我有一個抽象的基類,我將其稱為“父級”,並將一個派生類的集合稱為“ child1”,“ child2”等。我還有一個名為“ list”的類,其中包含一個可以設置為指向各種子級集合實例的父級指針數組。 例如,列表實例的數組字段可能包含指向2個child1和1個child2的指針。
當刪除列表的實例時,我想釋放child1和child2的各種實例,因此我需要一個child1,child2等的析構函數。另外,這需要我為抽象父類提供一個析構函數。
再次,上面的鏈接說服我,我可以找到一種方法來避免這樣做,或者可能是因為我發現自己需要這樣做,所以構思不佳。
如果對於此問題,堆棧溢出是錯誤的stackexchange,請告訴我,我將其移開。
感謝您的幫助PS:這是一些代碼:
#include <iostream>
#define arlen 10
class parent{
public:
virtual ~parent();
void somefunction();
};
parent::~parent(){}
class child1: public parent{
public:
~child1();
void somefunction();
};
child1::~child1(){}
class child2: public parent{
public:
~child2();
void somefunction();
};
child2::~child2(){}
class list{
public:
parent* ar[arlen];
~list(){
for (int n=0; n<arlen; n++) delete ar[n];
}
}
int main(){}
在我看來,您真正需要的只是parent
的virtual
析構函數。
使用虛擬dtor,通過parent
指針刪除,編譯器將正確調用派生類的析構函數。
這就是您真正需要的,我正確理解了您的問題,然后添加
virtual ~parent() = default;
您的基類應該做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.