作者march20 ()
看板Programming
標題Re: [推廣]Ultimate++ - Free C++ GUI Framework
時間Sat Jul 29 06:36:18 2006
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)