C++析构函数作为虚函数?

3 c++ destructor virtual-functions

我刚才读到,将C++析构函数实现为虚函数是一种很好的做法[1].为什么会这样?这是一般的良好做法吗?如果没有,在什么条件/情况下析构函数是虚函数?

参考

  1. https://www.blackhat.com/presentations/bh-usa-07/Afek/Whitepaper/bh-usa-07-afek-WP.pdf

Jam*_*lis 7

Herb Sutter在他的文章"虚拟性"中详细讨论了这个主题. 准则#4指出"基类析构函数应该是公共的和虚拟的,或者是受保护的和非虚拟的."

如果您的类未设计或打算用作基类,则没有理由使用虚拟析构函数声明它.