3
默认构造函数和析构函数的“ = default”与“ {}”有何不同?
我最初将此问题仅发布为关于析构函数的问题,但现在我添加了对默认构造函数的考虑。这是原始问题: 如果我想给我的类一个虚拟的析构函数,但在其他方面与编译器生成的析构函数相同,则可以使用=default: class Widget { public: virtual ~Widget() = default; }; 但是似乎我可以通过使用空定义进行更少的键入而获得相同的效果: class Widget { public: virtual ~Widget() {} }; 这两种定义有什么不同的表现方式吗? 根据针对该问题发布的答复,默认构造函数的情况似乎类似。既然对于析构函数,“ =default”和“ {}”之间的含义几乎没有差异,那么对于默认构造函数,这些选项之间的含义几乎也没有差异吗?也就是说,假设我要创建一个将同时创建和销毁该类型的对象的类型,为什么我要说 Widget() = default; 代替 Widget() {} ? 如果在发布原始问题后再提出此问题违反了某些SO规则,我深表歉意。为默认构造函数发布一个几乎相同的问题令我震惊,因为它是不太理想的选择。