2009-10-02 59 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++」系列非常有用,用非常可讀和難忘的風格編寫。