规则"A user-defined but do-nothing destructor is also a non-trivial destructor"太严格了?


class Base
{
public:
    ~Base() {}
private:
    int val;
};
Base base; // a global variable

看,析构函数什么都不做,就像 c++ 编译器提供的默认析构函数一样。但是析构函数仍然是一个非平凡的析构函数 适应帖子 什么是C++中的非平凡析构函数?

我知道,标准中的每个规则都必须严格。

但是,根据我粘贴的上部代码,用户定义的析构函数实际上什么也没做!为什么它也是不平凡的?我不明白。。。。

有什么我不知道的

魔法吗?

让规则绝对禁止定义赋予提供空定义的意义:它指定其实例不得被遗忘在提供其存储的数组中。 析构函数的作用(如果有的话)可以被视为在将来版本中可能会更改的实现细节。 它还避免了基于类定义中是否定义了"空"析构函数的含义更改;如果不是,它甚至可以是二进制兼容的,以更改它来做某事。

相关内容

最新更新