class Base
{
public:
~Base() {}
private:
int val;
};
Base base; // a global variable
看,析构函数什么都不做,就像c complier提供的默认析构函数一样.但是析构函数仍然是一个非平凡的析构函数,可以追溯到What is a non-trivial destructor in C++?之后
我知道,标准中的每个规则都必须严格.
但是,通过我粘贴的上层代码,用户定义的析构函数确实没有做任何事情!为什么它也是非平凡的?我不明白….
有什么魔法我不知道吗?
最佳答案 规则绝对禁止定义赋予提供空值的含义:它指定不得在提供存储的数组中忘记其实例.析构函数的作用(如果有的话)可以被视为可能在将来版本中更改的实现细节.它还根据是否在类定义中定义了“空”析构函数来避免意义的改变;如果不是,它甚至可以通过二进制兼容来改变它来做某事.