隐式定义的析构函数做什么

时间:2018-12-11 02:29:17

标签: c++ destructor object-lifetime

隐式定义的析构函数做什么?仅仅是编译器定义的空函数吗?

struct Foo
{
  int i;
};

struct Bar
{
  int i;
  ~Bar()
  { 
    // empty...
  }
};

Foo的破坏与Bar一样吗?还是隐式析构函数在编译器生成的主体内部做某事?

1 个答案:

答案 0 :(得分:3)

  

隐式定义的析构函数做什么?

它将与具有空主体的显式定义的析构函数相同。实际上,它会破坏所有子对象,并且仅执行其他操作。

  

这只是编译器定义的空函数吗?

在实践中,甚至可能不需要为空的函数。但是,以抽象机器的方式思考时可能会觉得有用。

  

还是隐式析构函数在编译器生成的主体内做某事?

取决于类。对于Foo,析构函数不需要执行任何操作。