【发布时间】:2015-07-16 19:50:59
【问题描述】:
我创建了一个抽象类,然后创建了继承这个抽象类的子类。
class A{
public:
virtual A* clone() const = 0;
virtual A* create() const = 0;
~virtual A(){};
// etc.
private:
A(){};
};
子类
class B: public A{};
class C: public A{};
我现在可以使用 A 类型的指针用这些类填充向量,并通过多态性访问子类。
vector<A*> Pntr;
问题是我希望每个子类处理自己的内存释放,有点像 RAII。但是 RAII 不适用于虚拟析构函数。有什么办法可以做到吗?
【问题讨论】:
-
仅供参考,构造函数不能是
virtual,只有方法和析构函数可以。 -
“我希望每个子类处理自己的内存释放” - 这是什么意思?
-
RAII 在任何现实场景中根本不起作用。它仅适用于 POD,不适用于 OOP
标签: c++