我是一个 C++ 菜鸟,我一直在阅读有关琐碎可破坏性的文章。
从这篇关于平凡可破坏性的文章中,
普通可破坏类型包括标量类型、普通复制构造类和此类类型的数组。
普通可破坏类是这样的类(用类、结构或联合定义):
- 使用隐式定义的析构函数。
- 析构函数不是虚拟的。
- 它的基类和非静态数据成员(如果有)本身也是可破坏的类型。
但显然 std::string 并不是可轻易破坏的。为什么?std::string 不满足上述哪条规则?
std::cout << std::boolalpha
<< "std::string is trivially destructible? "
<< std::is_trivially_destructible<std::string>::value << '\n'
Run Code Online (Sandbox Code Playgroud)
上面的代码片段返回以下输出:
std::string is trivially destructible? false
c++ ×1