C++ FAQ學習筆記 27章 編碼規範

[27.10] C++有沒有一些像lint一樣的規範原則?

  • class Fred的賦值運算符應該將*this做爲Fred&返回(允許將賦值運算串起來)

  • 一個類如果有函數,那麼也應該有虛析構函數
  • 一個類如果有{析構函數、賦值運算符、拷貝構造函數}中的任何一個,一般也需要另外兩個。
  • class Fred的拷貝構造函數和賦值運算符的參數應該用const來限定,即Fred::Fred(const Fred&)和Fred& Fred::operator=(const Fred&)
  • 當在構造函數中初始化對象成員時,總是使用初始化列表,而不是用賦值。對於用戶定義的類來說,這兩種辦法在性能上可能會有很大差別(3倍!)
  • 賦值運算符需要保證當對自身賦值時不做任何操作,否則可能會有麻煩。有時這要求做顯式的判斷。
  • 重載運算符時,要遵守指導原則。例如,如果類裏面重載了+=和+,那麼a += b和a = a + b一般來說應該是做相同的操作。其它內建/基本的類型也是如此(例如a += 1和++a;p[i]和*(p+i);等等)。在編寫二元運算符時,可以使用op=這種形式來強制達到這個目的

發佈了42 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章