gpt4 book ai didi

c++ - Pimpl 习语和交换

转载 作者:行者123 更新时间:2023-12-01 14:15:58 27 4
gpt4 key购买 nike

<分区>

我有几个基于 PIMPL 习语的类(其中 unique_ptr 指的是实际的实现结构)。

我还没有添加 friend swap 函数(如 here 所述),据我所知,标准 std::swap 使用移动语义,可以很好地交换 unique_ptr。到目前为止,还不错。

但是,我读了(Scott Meyers 的有点过时的 Effective C++,在第 25 项中说:

However, the default swap implementation might not thrill you. It involves copying three objects: a to temp, b to a, and temp to b. [...] For some types, the default swap puts you on the fast track to the slow lane. Foremost among such types are those consisting primarily of a pointer to another type that contains the real data. A common manifestation of this design is the "pimpl" idiom.

之后他还建议专门化 std::swap

我的问题是这在 C++11 中是否仍然成立。看起来 C++11 swap 对 pimpl 类来说工作得很好。我知道添加一个 friend swap 允许 STL 使用参数依赖查找等,但我更愿意让我的类尽可能精简。

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