我最初将这个问题仅限于析构函数,但现在我要考虑默认构造函数。以下是原始问题:
如果我想给我的类一个虚拟的析构函数,但与编译器生成的相同,我可以使用
=default
:
class Widget { public: virtual ~Widget() = default; };
但是使用一个空的定义似乎可以用更少的打字实现相同的效果:
class Widget { public: virtual ~Widget() {} };
这两个定义方式有什么不同的行为吗?根据对这个问题的回答,对于默认构造函数的情况似乎也是类似的。既然"
=default
"和"{}
"对于析构函数的意义几乎没有区别,那么对于默认构造函数这些选项的意义是否也相差无几呢?也就是说,假设我想创建一个类型,该类型的对象将被创建和销毁,为什么我要使用:
Widget() = default;
代替
Widget() {}
如果在发布问题后继续扩展问题违反了 Stack Overflow 的某些规则,我深表歉意。 对于默认构造函数发布几乎相同的问题,我认为这是不太理想的选择。
= default
更加明确,并且与对构造函数的支持保持一致。 - chris