Rational a, b, c, d, result; ... result = a + b + c + d; // 可能用了3個臨時對象 // 每個operator+ 調用使用1個 還是這樣編寫:
result = a; //不用臨時對象 result += b; // 不用臨時對象 result += c; //不用臨時對象 result += d; //不用臨時對象 前者比較輕易編寫、debug和維護,并且在80%的時間里它的性能是可以被接受的(參見條款16)。后者具有更高的效率,估計這對于匯編語言程序員來說會更直觀一些。通過提供兩種方案,你可以讓客戶端開發人員用更輕易閱讀的單獨形式的operator來開發和debug代碼,同時保留用效率更高的operator賦值形式替代單獨形式的權力。而且根據operator的賦值形式實現其單獨形式,這樣你能確保當客戶端從一種形式切換到另一種形式時,操作的語義可以保持不變。