posted on 2007-05-04 14:03 bo 閱讀(3179) 評論(5) 編輯 收藏 引用 所屬分類: Language
我覺得《C++設計新思維》這本書更像是一篇學術論文,它所描述的東西理論價值更大一些吧,用的時候就自己看著辦好了,像smartwin里的policy,就算是用得比較成功的例子吧 回復 更多評論
首先,C++的模板更多的是給庫設計者使用的.現有的模板使用困難的情況主要是由編譯器無法正確良好的定位錯誤.對于一個庫的設計者,必要的編譯器靈活性是必須的,而且現有模板仍然滿足不了靈活性的要求.所以0x里面還是要推出更加靈活更加泛型化的Concept;然后,C++的模板被用到現在這個樣子當時也沒有人預計到.最早B.Stroustrup也僅僅是認為模板就是附帶了編譯器驗證類型的宏而已.metaprogramming完全可以看作是一群無聊的人在無聊的時候想出來取樂的智力競賽題,只是Alexandrescu只是把這個游戲玩到登峰造極.實質上除了Typelist和自動繼承層級以外,其它的庫,特別是基于策略的思路構造的庫,都讓程序庫的設計者大開了眼界,同時從他的實際使用情況來看,對很多問題而言,這種設計的適應性很好,結構也并不復雜.再加上未來的0x的語法糖,也會讓Loki一類的庫使用起來更加方便.至于他的書的頭幾章節,這種底層的東西總是要有些技巧性的,BOOST的MPL還不是一樣寫的神乎其神的. 回復 更多評論
Bjarne看了那書也說人家是“too clever”,呵呵就像前面的老兄說的,模板技術、泛型編程更多的情況是適用于庫作者現在大量的C++庫,包括Boost、Loki以及很多Language Binding庫,都用到了書中提到的Policy技術,確實解決了以前存在的一些問題 回復 更多評論
個人比較認同“基于策略的思路構造的庫”,這也是我期望模板所能帶來的優越性。 回復 更多評論
模板帶來的是強類型的多態(利用靜多態)。它的好處就是利用強類型在編譯時攔截大量的錯誤。同時,類的出現,使得操作成為類型的一部分。強類型化后,不僅僅數據結構的邏輯性得到檢驗,連施加在這些數據上的操作也得到約束。因此,合理地運用模板和隨之帶來的強類型多態,可以使得代碼更高效,更簡潔,也更安全。 由于業界的大多數程序員還在努力消化OOP帶來的技術革命,還無法理解gp帶來的優勢。不同于OOP,業界也還沒有出現GP方面完整的理論,所以對模板及其帶來的好處還未能充分理解。 回復 更多評論
Powered by: C++博客 Copyright © bo