谁能给我一个如何在C++中正确使用“三巨头”的例子?[复制]

Can anyone please give me an example of how to properly use "The Big Three" in C++? [duplicate]

提问人:Jota 提问时间:3/8/2011 最后编辑:CommunityJota 更新时间:3/8/2011 访问量:226

问:

这个问题在这里已经有答案了:
12年前关闭。

可能的重复:
什么是三法则?

嗨,我一直在阅读有关该主题的信息,许多网站告诉我为什么我需要 ctor、copy ctor 和 dtor。但是我很难找到关于如何使用它们的好例子。 另外,我真的不明白为什么我们需要将参数作为常量传递给复制 ctor。任何帮助将不胜感激!

C++ 三法则

评论

1赞 Konrad Rudolph 3/8/2011
顺便说一句,这些网站都是错误的。三法则与构造函数无关;另一方面,它包括赋值运算符。
0赞 Edward Strange 3/8/2011
实际上,您不必将参数作为 const 传递给复制构造函数。我曾经为使用非常量引用的人工作。这真的很愚蠢,但你可以做到。
0赞 Martin York 3/8/2011
@Konrad Rudolph:我知道你的意思,但我认为,当应用三法则时,你确实需要确保构造函数也在那里。您不希望正确地依赖类的用户使用值初始化来确保指针为 NULL(因此我认为这是 4 法则(当您拥有 RAW 指针时,所有四个编译器生成的方法都最好通过重写))。
0赞 Konrad Rudolph 3/8/2011
@Martin我会更进一步:每个类都需要一个自定义构造函数。C++甚至提供默认构造函数是愚蠢的。但这在这里是无关紧要的:三(不是四,三)的规则与构造函数无关,它是一个非常严格的规则:它只是为了提供最低限度的正确性保证,仅此而已。你是对的,一个有意义的类也需要提供一个构造函数。

答:

1赞 ultifinitus 3/8/2011 #1

我认为这 什么是三法则? 可以回答你的问题。