class Base
{
public:
~Base() {}
private:
int val;
};
Base base; // a global variable
看,析构函数什么也不做,与c ++编译器提供的默认析构函数相同。但是析构函数仍然是帖子What is a non-trivial destructor in C++?
的重要角色我知道,标准中的每个规则都必须严格。
但是,根据我粘贴的高位代码,用户定义的析构函数实际上什么也没做!为什么它也是不平凡的?我不明白。...
有什么我不知道的魔法吗?
答案 0 :(得分:1)
具有完全禁止该规则的规则赋予提供一个空的定义具有含义:它指定不得在提供其存储的数组中忘记其实例。析构函数所做的(如果有的话)可以被视为实施细节,在将来的版本中可能会发生变化。它还避免根据类定义中是否定义了“空”析构函数来更改含义。如果不是这样,甚至可以将其更改为二进制兼容。