为了让问题重新打开,请投票者帮助我改进这个问题:如何改进这个问题以便重新打开?
Herb Sutter在文章中写道:
但是Sutter也写道了以下内容,暗示
根据这个准则,如果你有一个public non-virtual析构函数的类,则该类不应作为基类。 那么为什么不标记为一个基类析构函数应该是public和virtual,或protected和nonvirtual。
final
来加强这一点呢?
但是Sutter也写道了以下内容,暗示
final
不需要使用:
另一段相关引言表明,现在有了关于“final的用途较少”-确实是这样。我不知道有多少种情况可以使用它,在标准化期间,Bjarne反复要求列出解决的问题和应该使用它的模式, 我不记得有任何重大的问题或突出的模式。
final
,应该使用它,这段引言来自于Scott Meyer的Effective C++,第7项:
另一个数据点是,标准库中没有带“final”标记的类型,但原因似乎是为了避免破坏代码。如果你曾被诱惑继承标准容器或任何具有non-virtual析构函数的其他类,请抵制这种诱惑!(不幸的是,C++没有类似于Java的final classes或C#的sealed classes防止派生的机制。)
这里有一个类似的问题,但不完全相同,因为它缺少"protected, nonvirtual"选项:默认使类成为`final`或给它们一个虚拟析构函数?