2009-10-02 84 views
3

我一直在阅读C++并在其中编写一个小程序超过一年。 最近我遇到了三大法则。我从来不知道这条法律。C++法律? (类似于三大法则)

我意外地发现它在这里:Rule of Three

我可以知道C++中的其他任何此类法律吗?

+0

查看上列出的书籍。其中许多涵盖了这些话题。 http://www.parashift.com/c++-faq-lite/上的C++ FAQ也非常有帮助。 – gimpf 2009-10-02 12:09:24

+0

不要太认真对待这个“法律”。在大多数情况下,默认的复制构造函数都很好,如果您使用的类比绝大多数类都更有用,则只需要赋值运算符。 – Kieveli 2009-10-02 12:15:21

+5

@Kieveli:法律说*如果你定义一个,你应该定义所有三个。我认为这应该是相当认真的:除了伐木以外,在这三种功能中任何一种都没有什么意义,这并不意味着你需要在其他功能中做相应的事情。请注意,法律并没有说你应该为所有类定义它们,它只是意味着如果你在析构函数中释放资源,那么就需要压缩或替换默认的复制和分配。 – 2009-10-02 12:22:24

回答

14

你可能找C++的 “最佳做法”,而不是 “法律”。这应该有助于你在网上搜索。此外,Herb Sutter和Andrei Alexandrescu还有一本名为“C++编码标准:101规则,指南和最佳实践”的书,本应该是好的,但我没有自己读过。您可以订购它,例如amazon.com

+4

对于“非法律”+1 - 有几条规则应该始终应用并且总是有一定的角落案例。 – 2009-10-02 12:19:35

1

好吧,似乎每个人都同意赫伯特萨特和安德烈亚历山德斯库的惊人之书的价值。

C++ Coding Standards是一个最有趣的阅读。这些项目非常合理地分组,并且每个项目都足够详细,以便您了解不接受建议的风险。此外,每个项目都可能有例外情况,以及它们为什么是例外情况。

总而言之,对于试图实施一些实践的人来说,尤其是在安装代码评论时,这是非常宝贵的资产。

据我所知,还有另外一本'书',尽管只有PDF/HTML格式可用。它是一个标准化的几个标准

High Integrity C++也是非常有趣的,它符合条款(规则/指南的区别),有时提供替代方案(两个互斥的建议)。它比C++编码标准要详细得多,所以你可能想在第二位阅读它:)

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

5

我还发现斯科特·迈尔斯的“Effective C++”系列非常有用,用非常可读和难忘的风格编写。