精華區beta Programming 關於我們 聯絡資訊
ok, 我這樣說確實不夠嚴謹, 我不清楚製訂 C++ 的人是基於什麼理由設計出 template 的, 以下言論純粹是個人的使用經驗, 歡迎指教 :) ※ 引述《yoco.bbs@bbs.wretch.cc (眠月..)》之銘言: : ※ 引述《march20.bbs@ptt.cc》之銘言: : > 在沒有 RTTI 和 root class 時, template 就像是 syntax level 的 macro, : > 如果你反對大量的 macro, 那大概也不怎麼喜歡 C++ 的 template 吧. : ........................唔....|| macro 跟 template 不同處 1. macro 是給 preprocessor 看的, 嚴格來說, 非關 C++ 語法 template 是 compiler 看得懂的東西, 是 C++ 語法 2. macro 能做的事跟 template 不一樣, 像是 ## 這種字串代換 template 就做不來. 3. macro 的效果是 textual 的 而不是 syntatical , macro 施過魔法後, compiler 有時很難抓到真的問題. template 就不同了, compiler 可以很(?)精準地 抓到大部份的問題. 但就 "代換" 這個動作來說, macro 有的很多問題 template 都有 (eg. error/warning message 很難讀懂) 就 "製造 code 模版" 這件事來說, template 確實是種 macro, 但硬要說 "template 可以被 macro 取代" 是有問題的. 我想說的其實很簡單: 很多 macro 造成的問題, 在 template 都看得到, 因為就實質作用來說, 這兩種構造有很高的成份是相同的. 我認為 template 是種該 "小心使用" 的語言構造, 嚴謹地使用 可以帶來相當大的便利, 如 STL. 但誤用帶來的麻煩也遠較其它語法更為嚴重, STL 又是一個很好的例子 :P -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.54.43.37 ※ 編輯: march20 來自: 128.54.43.37 (07/29 06:37) ※ 編輯: march20 來自: 128.54.43.37 (07/29 06:38) ※ 編輯: march20 來自: 128.54.43.37 (07/29 06:38) ※ 編輯: march20 來自: 128.54.43.37 (07/29 06:39) ※ 編輯: march20 來自: 128.54.43.37 (07/29 06:40)
PwiPwiWorm:還是不能同意最後一句... 219.84.151.57 07/29 10:59
PwiPwiWorm:C++幾乎很多的地方都要"嚴謹地使用" 219.84.151.57 07/29 10:59
※ 編輯: march20 來自: 71.137.21.30 (07/29 12:42)