<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      閑人草堂

        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理

      今天忙活了半天,結果發現罪魁禍首在使用了auto_ptr。

      auto_ptr本身不含有賦值語義,所以在它賦值給別人(例如傳參時),實際發生的是控制權的轉移。

      1 auto_ptr<TYPE> A,B;
      2 A = B;

      第二行執行完畢后,B的地址為0;

      這就是智能指針auto_ptr的缺陷。倘若遇到類似的情況,還是用boost的shared_ptr吧。

      另外轉載一篇關于auto_ptr的文章,供自己學習。

      http://blog.csdn.net/normallife/archive/2011/02/23/6202930.aspx

      因為std::auto_ptr是轉移語義,而STL容器的元素必須是值語義,也就是拷貝語義的。

      比如,STL容器都是以副本的形式來保存元素。
      std::vector<int> v;
      int a = 1;
      v.push_back(a);
      v[0]也是值為1的int,但不是a..僅僅是一個副本.a的值也并未被改變.

      std::auto_ptr<int> p1(new int);
      std::auto_ptr<int> p2 = p1;
      p2的構造修改了p1的值,使p1交出了對動態分配的int的引用權.此時p1不再引用動態int.這就是轉移語義.

      另外,std::auto_ptr為了達到轉移語義的要求,只提供了這樣的一個拷貝構造函數
      auto_ptr(auto_ptr&); 而不是通常情況看到的T(const T&); 這就是一個非值語義的表現.

      而std::vector因為對元素類型要求是值語義的,所以必須要求元素類型提供T(const T&)的拷貝構造函數.
      它不能用于動態創建的數組。  
      可能是因為大部分時候用std::vector就很合適了,所以沒有與auto_ptr相對應的auto_array。不過如果真的有特殊需要的話,也很容易仿照 std::auto_ptr寫個auto_array。

      使用auto_ptr要知道:
      1. 智能指針不能共享指向對象的所有權
      2. 智能指針不能指向數組。因為其實現中調用的是delete而非delete[]
      3. 智能指針不能作為容器類的元素。

      posted on 2011-06-09 20:12  閑人草堂  閱讀(2733)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 白嫩少妇无套内谢视频| 亚洲综合久久精品哦夜夜嗨| 国产草草影院ccyycom| 国产日韩久久免费影院| 狠狠躁天天躁中文字幕无码| 麻豆国产成人AV在线播放| aa性欧美老妇人牲交免费| 日韩av一区二区精品不卡| 中文字幕av无码不卡| 伊吾县| 国产精品偷乱一区二区三区| 丁香五月亚洲综合在线国内自拍| 四虎在线播放亚洲成人| 亚洲精品日韩中文字幕| 亚洲精品久久久中文字幕痴女| 精品久久久久无码| 永久天堂网 av手机版| 熟女蜜臀av麻豆一区二区| 欧美丰满熟妇bbbbbb| 国产欧美综合在线观看第十页| 亚洲人成自拍网站在线观看| 国产免费无遮挡吸乳视频在线观看| 亚洲中文字幕无码爆乳| 国产精品欧美一区二区三区不卡| 国内精品久久黄色三级乱| 老妇xxxxx性开放| 中文字幕在线精品人妻| 91精品午夜福利在线观看| 特级做a爰片毛片免费看无码| 999精品色在线播放| 汕头市| 日韩有码中文字幕国产| 国产成人无码区免费内射一片色欲 | 国产精品天干天干综合网| av 日韩 人妻 黑人 综合 无码| 激情人妻自拍中文夜夜嗨| 亚洲国产一区二区三区| 亚洲一区二区三区蜜桃臀| 亚洲V天堂V手机在线| 国产超碰无码最新上传| 在国产线视频A在线视频|