写 constructor/destructor 是个好习惯吗?

Is it good practice to write constructor/destructor?

我想知道总是写 constructor/destructor 是否是一个好习惯,即使我不使用它们。

class Foo
{
public:
    Foo(){};
    ~Foo(){};
};

或者只有在我实际使用它们时才编写它们是更好的做法吗?

class Foo
{
public:
};

当默认成员函数足够时,用户定义特殊成员函数是个坏主意。

  • 您将丢失默认生成的移动操作,请参阅

  • 您的 class 将不再是微不足道的,导致分配和释放以及容纳您的 class 的容器效率大大降低。

  • 默认定义可能会自动 noexcept,但你丢失了它。

  • 您的class不再是聚合,因此您不能使用聚合初始化。

  • 如果你将析构函数设为虚拟,如你的问题所示,你也会失去标准布局。