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

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

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

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

          Variadic templates
          模板技術(shù)的出現(xiàn)帶來了范型程序設(shè)計的發(fā)展,但是模板原本的一些限制,制約了很多美好的夢想??纯碽oost里面的tuple和functional,雖然有簡單方便的使用接口,內(nèi)部的實現(xiàn)卻晦澀難懂,以至于使用時,如果編譯器爆出了錯誤,其信息往往讓人云里霧里,不知所云。為了解決這些問題制約,新標(biāo)準(zhǔn)提出了不少語法新特性,Variadic templates 可變模板類型參數(shù)就是很 有意義的一項新特性。
          現(xiàn)在一行代碼就可以搞定原先 要用宏,元編程等傷腦筋的技術(shù)才能解決的“小問題”。
          #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
          研究得好深~~今天看著你寫得代碼,依然一頭霧水,一年來都沒什么長進(jìn)~~好慚愧好慚愧。。。。  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 华蓥市| 古交市| 黄陵县| 明光市| 深水埗区| 石河子市| 嘉禾县| 新沂市| 宜春市| 叙永县| 米泉市| 石景山区| 克山县| 鄂托克前旗| 天门市| 大关县| 吴旗县| 丹巴县| 台南市| 密云县| 宣汉县| 建宁县| 黄浦区| 紫阳县| 社旗县| 瑞昌市| 长海县| 陆良县| 安吉县| 临桂县| 土默特左旗| 吴堡县| 甘南县| 衡东县| 肃宁县| 沅江市| 水城县| 西和县| 莫力| 新竹县| 区。|