使用 std::unique_ptr 和五法则C++ PIMPL

C++ PIMPL using std::unique_ptr and rule of five

提问人:joaerl 提问时间:4/9/2022 更新时间:4/9/2022 访问量:202

问:

如果使用 std::unique_ptr 有一个带有 pimpl 的 c++ 类,并通过声明我自己的析构函数来解决 pimpl 类在标头中不完整的事实(我知道我也可以提供一个自定义删除器,但让我们使用这个的 dtor)。如果遵循五法则,我想我也应该继续声明复制/移动构造函数/赋值运算符。然而,通常(总是?)给出五规则的原因是,声明一个特殊成员可能表明该类有一些需要特别注意的资源,而这里的情况并非如此。

例如,如果我不需要可复制的类,在这种情况下偏离五规则是否合理?

C++ unique-ptr pimpl-idiom 五法则

评论

1赞 apple apple 4/9/2022
我认为只声明一个(默认)析构函数没有错
0赞 apple apple 4/9/2022
可复制在这里并不真正相关 IMO.
3赞 Taekahn 4/9/2022
声明所有这些或不声明它们的重点是 1。因为你说的,但是 2.因为每个版本都提供或不提供每个规则背后的规则变得越来越复杂。它还有助于记录您的意图。10 年后,如果您提供了已删除的移动构造函数,我知道您不希望它移动。如果你根本不提供,我不知道你的初衷是什么。
0赞 joaerl 4/10/2022
@Taekahn 这是一个很好的观点。我是明确说明意图的粉丝。

答: 暂无答案