【发布时间】:2018-05-14 20:07:07
【问题描述】:
读完这篇Use-cases of pure virtual functions with body? 的帖子后,我的印象是可以避免使用带有主体的纯虚函数,但是在这种情况下我不知道该怎么做:
我有一个抽象基类,我将其称为“父类”和一个派生类的集合,我将其称为“child1”、“child2”等。我还有另一个类,称为“list”它包含一个父指针数组,可以设置为指向各种子集合的实例。例如,列表实例的数组字段可能包含指向 2 个 child1 和 1 个 child2 的指针。
删除列表实例时,我想释放 child1 和 child2 的各种实例,因此我需要 child1、child2 等的析构函数。此外,这需要我有一个抽象父类的析构函数。
再一次,上面的链接说服了我,我可以找到一种不这样做的方法,或者可能的是,我的问题考虑得不好,因为我发现自己需要这样做。
如果堆栈溢出是这个问题的错误堆栈交换,请告诉我,我会移动它。
感谢您的帮助 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(){}
【问题讨论】:
-
您能向我们展示一下您到目前为止所写的尝试吗?
-
请展示您的代码而不是描述它。最好是minimal reproducible example。
-
嗯,您发布的链接说纯虚拟析构函数需要一个主体。
-
当然,来点伪代码怎么样,我会等几分钟
-
@fred 不,不是伪代码。
标签: c++