看板 C_and_CPP 關於我們 聯絡資訊
Ch 16.1 Template的定義式 p.635 -----------以下為原文-------------------------------- 有些讀者可能認為大小比較動作如果以 < 和 > 運算子執行,會更自然些 : //預期的比較動作 if ( v1 < v2 ) return -1; if ( v1 > v2 ) return 1; return 0; 然而若寫成這樣 : //預期的比較動作 if ( v1 < v2 ) return -1; if ( v1 > v2 ) return 1; return 0; 就是減少 「對引數型別的需求量 」。在這而,引數型別必須支援 < 但不必同時支援 > ---------原文結束------------------------------------- 黃色是我認為有問題的部分 應該把 v1 > v2 改成 v2 < v1 簡單來說當你使用 Template 時,不能夠預期每個 Template 的參數 都同時支援 < 跟 > ,也許會碰到只有支援 < 的參數。 所以減少支援可以免除掉一些不必要的錯誤 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.200.21 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1422347630.A.CCD.html
bibo9901: .......有什麼不一樣嗎@@ 01/27 19:41
PkmX: v1 > v2 和 v2 < v1 不是一樣的意思嗎 =_= 01/27 19:51
shiuantzuo: 維大力?! 01/27 20:40
azureblaze: 說不定只有operator<() 01/27 20:52
kwpn: 若只有實作operator<, 你的才不通 01/27 21:02
LPH66: Joel 說過「在 C++ 裡看到 i = j * 5; 你什麼都不知道」 01/27 21:39
LPH66: 要問 v1 > v2 還是 v2 < v1 哪個對還真的要看程式碼才行 01/27 21:39
suhorng: i < v1 > v2 01/27 22:03
Caesar08: 為什麼只有實作<,他的才不通? 他只有用到小於阿 01/28 04:42
Caesar08: 另外,我找不到那頁,是模板那邊嗎?能給完整的一頁嗎? 01/28 04:45
ACMANIAC: 可以講清楚一點嗎。 01/28 08:14
※ 編輯: fwfly (15.211.131.254), 01/28/2015 09:52:37
cloudrick: 試了一下 若class只定義了< 那麼用到 v1>v2 會有錯 01/28 10:20
cloudrick: 錯誤是該 class 不支援operator> 01/28 10:21
cloudrick: 另外C++Primer5th裡已修正成只使用<了 v1<v2 v2<v1 01/28 10:36
fwfly: 感謝樓上實驗以及解說 01/28 10:42
kwpn: 你怎修文修到兩段code都變一樣, 文章的來龍去脈整個變了. 01/28 18:04
s1000: 推一個 01/28 21:29