2.解释一下什么是trivial destructor
2.解释一下什么是trivial destructor
trivial destructor = 空的、编译器自动生成的、什么都不做的析构函数。
它是 C++ 里对 “无操作析构函数” 的官方定义。
1. 什么时候析构函数是 trivial?
必须同时满足:
- 你没有自己写析构函数(编译器合成)
- 类里没有虚函数
- 类里没有虚基类
- 所有基类、成员变量的析构函数也都是 trivial
满足 → trivial destructor
不满足 → non-trivial destructor
2. trivial 析构函数做什么?
什么都不做!
- 不释放内存
- 不执行任何代码
- 编译器直接优化掉
class A { int x; };
// 编译器生成的析构是 trivial
3. 有什么意义?(面试 / 底层重点)
- 效率高:调用时无开销,编译器直接优化掉
- 可以安全地用
memcpy、memset - 对象销毁时不需要执行析构逻辑
- 属于 “平凡类型”,可直接二进制拷贝
4. 反过来:什么时候不是 trivial?
只要出现下面任意一个,就 不是 trivial:
- 你写了
~A() {} - 有虚函数
- 有虚基类
- 成员 / 基类有 non-trivial 析构
class A { ~A(){} }; // 非 trivial
class B { virtual f(){} }; // 非 trivial
最终背诵版
trivial destructor 是编译器自动生成、无任何操作的空析构函数。
不含虚函数、虚基类,且所有成员 / 基类都无自定义析构时才是 trivial,
特点是无开销、可安全内存拷贝。

浙公网安备 33010602011771号