我理解虚拟析构函数的必要性.但为什么我们需要纯虚拟析构函数?在其中一篇C++文章中,作者提到我们在创建类抽象时使用纯虚析构函数.
但是我们可以通过将任何成员函数设置为纯虚拟来使类抽象化.
所以我的问题是
我们什么时候才能真正使析构函数变为虚拟?任何人都能给出一个很好的实时例子吗?
当我们创建抽象类时,将析构函数设置为纯虚拟是一种很好的做法吗?如果是..那为什么?
开始在现有代码库上使用PC-Lint(恐惧和恐惧).
它抱怨的一件事是:
class IBatch
{
public:
virtual void StartBatch() =0;
virtual int CommitBatch() =0;
};
Run Code Online (Sandbox Code Playgroud)
当另一个类派生出来时,它就像一个接口一样使用它
base class 'IBatch' has no destructor
Run Code Online (Sandbox Code Playgroud)
所以,问题是:当您创建如上所述的接口类时,您是否始终包含虚拟析构函数?为什么?(是样式还是编码错误?)
编辑:应该说我不希望或希望IBatch 的用户破坏,他们只是一个服务的消费者,通过这个接口到一些外部实现类(如果这会有所作为)