【问题标题】:Difference between virtual ~T(){} and virtual ~T() = default; [duplicate]virtual ~T(){} 和 virtual ~T() = default 之间的区别; [复制]
【发布时间】:2016-03-15 12:39:26
【问题描述】:

在编写virtual 析构函数时,是否有任何功能或外观上的区别

virtual ~T() = default;

结束

virtual ~T() {}

它们似乎对type_traits 中的任何东西都有相同的影响,我可以考虑用它来测试。

【问题讨论】:

标签: c++ c++11


【解决方案1】:

它们实际上是相同的。虽然与非虚拟析构函数有所不同,但一旦将virtual 粘贴在那里,它就不再是微不足道的了。

这不是= default 导致生成非平凡特殊成员函数的唯一一次。例如,如果您有一个具有非平凡析构函数的成员,则使用 = default 不会导致为包含类型创建平凡析构函数,即使使用非虚析构函数也是如此。

无论如何你都应该使用= default,只是为了表明你的意图。

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2014-10-12
    • 2017-11-29
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多