天天看點

C++程式設計規範之函數與操作符(讀書筆記)

第25條 正确地選擇通過值、(智能)指針或者引用傳遞參數

摘要:

 正确選擇參數,厘清輸入參數、輸出參數和輸入/輸出參數,厘清值參數和引用參數。正确的傳遞參數。

選擇參數的準則:

對隻輸入參數

始終用const限制所有指向隻輸入參數的指針和引用

優先通過值來取得原始類型和複制開銷比較低的值對象的輸入。

優先按const的引用取得其他使用者定義類型的輸入

如果函數需要其參數的副本,則可以考慮通過值傳遞代替通過引用傳遞

對輸出參數或者輸入/輸出參數:

如果參數是可選的或者函數需要儲存這個指針的副本或者操控參數的所有權,那麼應該優先通過(智能)指針傳遞。

如果參數是必須的,而且函數無需儲存指向參數的指針或者無需操控參數的所有權,則應該優先通過引用傳遞

第26條 保持重載操作符的自然語義

摘要:隻有在有充分理由時才重載操作符,而且應該保持其自然語義。

第27條 優先使用算術操作符和指派操作符的标準形式

摘要:如果要定義a+b,也應該定義a+=b,在定義二進制算術操作符時,也應該提供操作符的指派形式,并且應該盡量減少重複,提高效率。

第28條 優先使用++和- -的标準形式。優先調用字首形式

第29條 考慮重載以避免隐含類型轉換

摘要:隐式類型轉換提供了文法上的便利,但是如果建立臨時對象的工作并不必要而且适于優化,那麼可以提供簽名與常見參數類型精确比對的重載函數,而且不會導緻轉換。

第30條 避免重載&&、||或 ,(逗号)

第31條 不要編寫依賴于函數參數求值順序的代碼

摘要:函數參數的求職順序是不确定的,是以不要依賴具體的順序。

繼續閱讀