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