gpt4 book ai didi

c++ - 为什么平凡的可复制类要求析构函数必须平凡

转载 作者:太空狗 更新时间:2023-10-29 21:21:24 31 4
gpt4 key购买 nike

基于C++标准。 trivial copyable class定义如下:

根据 9/5,

A trivially copyable class is a class that:
- has no non-trivial copy constructors (12.8),
- has no non-trivial move constructors (12.8),
- has no non-trivial copy assignment operators (13.5.3, 12.8),
- has no non-trivial move assignment operators (13.5.3, 12.8), and
- has a trivial destructor (12.4).

据我了解,trivially copyable class 是可以按位复制的。那么需要与按位复制无关的普通析构函数的直觉和理由是什么。

最佳答案

原因很简单。平凡可复制意味着将一个对象 A 复制到另一个对象 B 之上是有效且已定义的行为。显然,不会调用 B 的析构函数,因此它必须是平凡的。

N3797 3.8/4 中对对象生命周期的描述似乎涵盖了这种情况。但是,如果程序不依赖于析构函数的副作用,则可能存在关于存储重用和不调用非平凡析构函数的漏洞。

关于c++ - 为什么平凡的可复制类要求析构函数必须平凡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22494344/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com