编译器自动生成析构函数
今天翻《c++ primer 4th》时,关于“析构函数”,有如下描述:
“与复制构造函数或赋值操作符不同,编译器总是会为我们合成一个析构函数。
...
析构函数与复制构造函数或赋值操作符之间的一个重要区别是,即使我们编写了自己的析构函数,合成析构函数仍然运行。
”
也就是说,无论是否为类显示提供析构函数,编译器都会自动生成一个(它提供的)析构函数。
然后我翻了一下c++ 11文档(ISO/IEC 14882),里面关于“析构函数”这一节,第4条:
“
4 If a class has no user-declared destructor, a destructor is implicitly declared as defaulted (8.4). An implicitly-declared destructor is an inline public member of its class.
5 A defaulted destructor for a class X is defined as deleted if:
...
”
这第4条提了个前提条件:“If a class has no user-declared destructor”。我E文不好,请问大虾们,这与《c++ primer》的描述冲突不?标准是否是说,如果一个类没有用户提供的析构函数,才由编译器合成一个默认的析构函数?
请大家帮忙解惑,回帖有分。谢谢大家。*^_^*