C++;法律?(类似于三巨头法则) 我已经阅读C++并在其中写了小程序一年多了。 最近我遇到了三大法则。我从来不知道这条法律

C++;法律?(类似于三巨头法则) 我已经阅读C++并在其中写了小程序一年多了。 最近我遇到了三大法则。我从来不知道这条法律,c++,C++,我无意中在这里找到了: 我可以知道C++中的任何其他的法律吗?< /p> < p>对于这种事情,我建议: 你可能在寻找C++的“最佳实践”,而不是“定律”。这将有助于你在网上搜索 此外,赫伯·萨特(Herb Sutter)和安德烈·亚历山德雷斯库(Andrei Alexandrescu)有一本书叫《C++编码标准:101条规则、指导方针和最佳实践》,这本书应该很好,但我自己没有读过。你可以订购,例如,在。嗯,似乎每个人都同意赫伯·萨特和安德烈·亚历山德雷斯库这本神奇的书的价值 这是一本非常有

我无意中在这里找到了:


我可以知道C++中的任何其他的法律吗?< /p> < p>对于这种事情,我建议:


你可能在寻找C++的“最佳实践”,而不是“定律”。这将有助于你在网上搜索


此外,赫伯·萨特(Herb Sutter)和安德烈·亚历山德雷斯库(Andrei Alexandrescu)有一本书叫《C++编码标准:101条规则、指导方针和最佳实践》,这本书应该很好,但我自己没有读过。你可以订购,例如,在。

嗯,似乎每个人都同意赫伯·萨特和安德烈·亚历山德雷斯库这本神奇的书的价值

这是一本非常有趣的书。这些项目按逻辑进行分组,每个项目都非常详细,足以让您了解不听从建议的风险。此外,每个项目都有可能例外的规则,以及为什么他们是例外

总而言之,对于试图实施大量实践的人来说,这是一项非常有价值的资产,尤其是在安装代码审查时

据我所知,还有另一本“书”,虽然只提供PDF/HTML格式。它是引用的几个标准的混合体

还非常有趣的是,它限定了项目(规则/指南区别),有时还提供了备选方案(两个相互排斥的建议)。它比C++编码标准要详细得多,所以你可能想在第二个位置读它:


您可以获得PDF版本,他们会通过电子邮件发送给您。

我还发现Scott Myers的“高效C++”系列非常有用,以非常可读和令人难忘的风格编写。

请查看中列出的书籍。其中许多都涉及这类主题。C++ FAQ也很有用,不要太认真对待这个“法律”。默认的复制构造函数在大多数情况下都是可以使用的,如果您使用类的方式比使用大多数类的方式更奇特,则只需要赋值运算符。@Kieveli:法律规定,如果您定义一个,则应定义所有三个。我认为应该相当认真地对待它:除了日志记录之外,在这三个函数中的任何一个都没有什么意义,这并不意味着你需要在其他函数中做相应的事情。请注意,法律并没有规定您应该为所有类定义它们,它只是意味着,例如,如果您释放析构函数中的资源,则需要抑制或替换默认副本和赋值。@Kieveli:I second one by here,如果你真的必须定义这三个类中的一个,那就意味着你的类是特殊的,如果你不定义其他的2个,你就会留下漏洞。C++11将这一点扩展为5个规则。或3、4或5+1对于“非法律”-应始终适用的规则很少,并且始终适用于某些特殊情况。