【发布时间】:2012-09-01 10:58:16
【问题描述】:
这个问题看起来像Virtual destructor: is it required when not dynamically allocated memory?中的讨论
在一个考试问题中,有人问我: - 维护指向动态分配内存的指针的基类应该定义什么?
我回答: - 一个复制构造函数和一个赋值运算符(以确保不仅复制指针......参见深拷贝)和一个析构函数(释放分配的内存)
他们说这是不正确的,因为这个基类还应该定义一个虚拟析构函数而不是普通的析构函数。为什么?
【问题讨论】:
-
你应该问你的考官,而不是我们。她是断言你需要一个虚拟析构函数的人。
-
您完全有权要求考官解释原因,这应该是您的第一步。
-
关于包含动态分配的资源的内容有点像红鲱鱼。关键是“基类”,这意味着继承,因此可以通过基类类型指针删除派生类,这是您需要担心虚拟析构函数的地方。