[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=這種形式來強制達到這個目的