隨筆 - 67  文章 - 79  trackbacks - 0
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          c++0x標準中的那個x終于定下來了, 不出意外,就是9。于是新版C++,也就是09版,趕在了最后一刻出爐了。
          C++0x 去年就開始研究了,這東西是越看越頭痛,學到了幾個呼聲很高的簡化編碼的改進。

          auto:
          C++中迭代器最讓人詬病的 就是那冗長繁瑣的聲明。像這樣: std::vector<int>::iterator iter= v.begin(); 我們的主要目的是聲明iter=v.begin(),但是卻要寫常常的一串std::vector<int>::iterator 篇幅比主角要多好多。這還算比較簡單的聲明,如果是boost里面的庫,有些類型聲明基本不是人能寫出來的。于是,為了響應廣大群眾的呼聲,新標準改進了auto關鍵字,現在可以這樣寫
          auto iter=v.begin(); 具體的類型聲明交給編譯器去推斷了,這本來就是它最擅長的地方。

          Variadic templates
          模板技術的出現帶來了范型程序設計的發展,但是模板原本的一些限制,制約了很多美好的夢想??纯碽oost里面的tuple和functional,雖然有簡單方便的使用接口,內部的實現卻晦澀難懂,以至于使用時,如果編譯器爆出了錯誤,其信息往往讓人云里霧里,不知所云。為了解決這些問題制約,新標準提出了不少語法新特性,Variadic templates 可變模板類型參數就是很 有意義的一項新特性。
          現在一行代碼就可以搞定原先 要用宏,元編程等傷腦筋的技術才能解決的“小問題”。
          #include <iostream>
          #include 
          <string>
          #include 
          <tr1/memory>
          #include 
          <boost/typeof/typeof.hpp>

          template
          <typename T>
          std::tr1::shared_ptr
          <T> New(){
              
          return std::tr1::shared_ptr<T>(new T());
          }

          template
          <typename T,typename Args>
          std::tr1::shared_ptr
          <T>  New(Args args){
              
          return std::tr1::shared_ptr<T>(new T(args));
          }

          int main(){
              BOOST_AUTO(p1,New
          <int>());
              BOOST_AUTO(p2,New
          <int>(1));
              BOOST_AUTO(p3,New
          <std::string>("hello world"));
              std::cout
          <<*p1<<std::endl;
              std::cout
          <<*p2+*p2<<std::endl;
              std::cout
          <<p3->c_str()<<std::endl;
          }
          上面的代碼 解決了小問題 了卻了大麻煩


          posted on 2009-04-27 10:59 zarra 閱讀(228) 評論(1)  編輯  收藏

          FeedBack:
          # re: c++0x?c++09[未登錄] 2009-04-27 18:41 apple
          研究得好深~~今天看著你寫得代碼,依然一頭霧水,一年來都沒什么長進~~好慚愧好慚愧。。。。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 旬邑县| 富源县| 遵义县| 波密县| 盐池县| 泰来县| 舟曲县| 绩溪县| 清远市| 拜城县| 万全县| 漳浦县| 昌邑市| 阳信县| 保靖县| 荥经县| 铜梁县| 焦作市| 肥东县| 海伦市| 台东县| 安塞县| 滕州市| 新干县| 阿拉善右旗| 泰宁县| 集贤县| 和田市| 遂川县| 汾西县| 黔江区| 石楼县| 黄石市| 阿克陶县| 锦屏县| 黔东| 浦东新区| 云阳县| 中卫市| 黑龙江省| 驻马店市|