Virtual Default Destructors in C++

前端 未结 4 1611
旧巷少年郎
旧巷少年郎 2020-12-24 08:02

I\'ve got a large set of inherited classes (criteria) which inherit from a base class (criterion). Here\'s criterion\'s code

class criterion
{
p         


        
4条回答
  •  悲哀的现实
    2020-12-24 08:22

    The recommendation is to insert:

    virtual ~criterion() {}
    

    Starting from C++11, you can use = default; instead of an empty body {}.

    This is to avoid problems with deleting from a base class' pointer. Otherwise you will leak memory as derived classes' destructors will not be called.

    criterion *c = new fastFilter();
    delete c; // leaks
    

提交回复
热议问题