C++ 有谁能给我举个例子,说明如何正确使用;“三巨头”;在C++;?

C++ 有谁能给我举个例子,说明如何正确使用;“三巨头”;在C++;?,c++,class,rule-of-three,C++,Class,Rule Of Three,可能重复: 嗨,我一直在读关于这个主题的文章,很多网站都告诉我为什么我需要一个ctor、复制ctor和dtor。但我很难找到如何使用它们的好例子。 我也不明白为什么我们需要把参数作为常量传递给copyctor。任何帮助都将不胜感激 我想这也许能回答你的问题。顺便说一句,这些网站都错了。“三个法则”与建造师无关;另一方面,它包括赋值运算符。实际上,您不必将参数作为常量传递给复制构造函数。我曾经为一个使用非常量引用的人工作。康拉德·鲁道夫:我知道你的意思,但我想说的是,当应用三的规则时,你确实需要

可能重复:

嗨,我一直在读关于这个主题的文章,很多网站都告诉我为什么我需要一个ctor、复制ctor和dtor。但我很难找到如何使用它们的好例子。
我也不明白为什么我们需要把参数作为常量传递给copyctor。任何帮助都将不胜感激

我想这也许能回答你的问题。

顺便说一句,这些网站都错了。“三个法则”与建造师无关;另一方面,它包括赋值运算符。实际上,您不必将参数作为常量传递给复制构造函数。我曾经为一个使用非常量引用的人工作。康拉德·鲁道夫:我知道你的意思,但我想说的是,当应用三的规则时,你确实需要确保构造函数也在那里。您不想依靠类的用户正确地使用值初始化来确保指针为NULL(因此我认为这是4的规则(当您拥有原始指针时,最好覆盖所有四个编译器生成的方法))。@Martin我会更进一步:每个类都需要一个自定义构造函数。C++甚至提供默认构造函数是愚蠢的。但这与此无关:三的规则(不是四,三)与构造函数无关,它是一个非常严格的规则:它只提供最低限度的正确性保证,仅此而已。一个有意义的类也需要提供构造函数,这是正确的。