[分享] c++ primer 4/e p.635 修正

看板C_and_CPP作者 (大笨蛋... )時間11年前 (2015/01/27 16:33), 11年前編輯推噓4(4013)
留言17則, 12人參與, 最新討論串1/1
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

01/27 19:41, , 1F
.......有什麼不一樣嗎@@
01/27 19:41, 1F

01/27 19:51, , 2F
v1 > v2 和 v2 < v1 不是一樣的意思嗎 =_=
01/27 19:51, 2F

01/27 20:40, , 3F
維大力?!
01/27 20:40, 3F

01/27 20:52, , 4F
說不定只有operator<()
01/27 20:52, 4F

01/27 21:02, , 5F
若只有實作operator<, 你的才不通
01/27 21:02, 5F

01/27 21:39, , 6F
Joel 說過「在 C++ 裡看到 i = j * 5; 你什麼都不知道」
01/27 21:39, 6F

01/27 21:39, , 7F
要問 v1 > v2 還是 v2 < v1 哪個對還真的要看程式碼才行
01/27 21:39, 7F

01/27 22:03, , 8F
i < v1 > v2
01/27 22:03, 8F

01/28 04:42, , 9F
為什麼只有實作<,他的才不通? 他只有用到小於阿
01/28 04:42, 9F

01/28 04:45, , 10F
另外,我找不到那頁,是模板那邊嗎?能給完整的一頁嗎?
01/28 04:45, 10F

01/28 08:14, , 11F
可以講清楚一點嗎。
01/28 08:14, 11F
※ 編輯: fwfly (15.211.131.254), 01/28/2015 09:52:37

01/28 10:20, , 12F
試了一下 若class只定義了< 那麼用到 v1>v2 會有錯
01/28 10:20, 12F

01/28 10:21, , 13F
錯誤是該 class 不支援operator>
01/28 10:21, 13F

01/28 10:36, , 14F
另外C++Primer5th裡已修正成只使用<了 v1<v2 v2<v1
01/28 10:36, 14F

01/28 10:42, , 15F
感謝樓上實驗以及解說
01/28 10:42, 15F

01/28 18:04, , 16F
你怎修文修到兩段code都變一樣, 文章的來龍去脈整個變了.
01/28 18:04, 16F

01/28 21:29, , 17F
推一個
01/28 21:29, 17F
文章代碼(AID): #1KnqrkpD (C_and_CPP)