隐式定义的析构函数做什么?仅仅是编译器定义的空函数吗?
struct Foo
{
int i;
};
struct Bar
{
int i;
~Bar()
{
// empty...
}
};
Foo的破坏与Bar一样吗?还是隐式析构函数在编译器生成的主体内部做某事?
答案 0 :(得分:3)
隐式定义的析构函数做什么?
它将与具有空主体的显式定义的析构函数相同。实际上,它会破坏所有子对象,并且仅执行其他操作。
这只是编译器定义的空函数吗?
在实践中,甚至可能不需要为空的函数。但是,以抽象机器的方式思考时可能会觉得有用。
还是隐式析构函数在编译器生成的主体内做某事?
取决于类。对于Foo
,析构函数不需要执行任何操作。