【发布时间】:2016-03-15 12:39:26
【问题描述】:
在编写virtual 析构函数时,是否有任何功能或外观上的区别
virtual ~T() = default;
结束
virtual ~T() {}
它们似乎对type_traits 中的任何东西都有相同的影响,我可以考虑用它来测试。
【问题讨论】:
在编写virtual 析构函数时,是否有任何功能或外观上的区别
virtual ~T() = default;
结束
virtual ~T() {}
它们似乎对type_traits 中的任何东西都有相同的影响,我可以考虑用它来测试。
【问题讨论】:
它们实际上是相同的。虽然与非虚拟析构函数有所不同,但一旦将virtual 粘贴在那里,它就不再是微不足道的了。
这不是= default 导致生成非平凡特殊成员函数的唯一一次。例如,如果您有一个具有非平凡析构函数的成员,则使用 = default 不会导致为包含类型创建平凡析构函数,即使使用非虚析构函数也是如此。
无论如何你都应该使用= default,只是为了表明你的意图。
【讨论】: