青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Mike's blog

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  0 Posts :: 23 Stories :: 83 Comments :: 0 Trackbacks

常用鏈接

留言簿(17)

我參與的團隊

搜索

  •  

最新評論

C++中幾乎所有的類都有拷貝構造函數,析構函數和賦值操作符重載函數,即使你不顯示定義,編譯器也會自動生成的,它們提供的都是一些最基本的功能

拷貝構造函數一種特殊的構造函數,他由編譯器調用來完成一些基于同一類的其他對象的構件及初始化;

析構函數摧毀一個對象并保證它被徹底清除;

賦值操作符:以已有對象為藍本另一對象進行新的值。

所謂的大三律(rule of three, the law of the big three or the big three)正是在規則他們之間的關系:

1.如果類定義了析構函數,那么也應該定義拷貝構造和賦值運算符;

2.如果類含有需要動態分配的成員,那么該類必須定義拷貝構造和賦值運算符;

一句話,析構函數、拷貝構造、賦值運算符重載應該總是同時出現。下面一個簡單的例子程序對這個定律做了論證:

 1#include <iostream>
 2
 3using namespace std;
 4
 5class Test
 6{
 7  public:
 8    Test() 
 9    {  
10      _pdata = new char[100]; 
11    }
;
12
13    ~Test() 
14    
15      delete [] _pdata; 
16    }
;
17  
18  private:
19    char* _pdata;
20}
;
21
22
23int main()
24
25  Test a;
26  Test b;
27  
28  b = a;
29
30  return 0;
31}

32
上面這么一段簡單的代碼看似沒什么問題,然而卻隱藏著嚴重的內存泄露。
在25行定義了一個類的對象,同時對象a中的數據成員_pdata也在堆中分配了內存,同理26行對對象b做了同樣的事情,然而28行處將a賦值給b,默認賦值運算符做的是對數據成員逐個的賦值,或者說是做了淺拷貝,所以對象b中的成員_pdata指向了跟對象a中的_pdata的同一塊內存,在析構的時候就會產生a中的_pdata指向的那塊內存被釋放了兩次,而原先對象b中分配的內存卻沒有釋放的問題。
如果將26、28行換成Test b = a或Test b(a),結果是一樣的,不同的是調用的是拷貝構造函數。

既然知道了問題所在,那么解決的方法當然自己來定義拷貝構造和賦值運算符了,具體做法就不列舉了。

在某些情況下,實現類的拷貝構造函數和賦值操作符是非常麻煩的時候,特別是確定程序中不會做拷貝和賦值操作的時候,去實現它們確實有點得不償失。而不定義又怕出現上述問題,在這里有個巧妙(與其說巧妙不如說偷懶:-))的方法,就是可以只將它們聲明為private成員而不去實現它們。這樣既可以防止了會有人去顯示調用它們,也防止了編譯器自動生成。

順便提一下拷貝構造被調用的三種場合:
1.在聲明語句中用一個對象初始化另一個對象;
2.將一個對象作為參數按值調用方式傳遞給另一個對象時生成對象副本;
3.生成一個臨時對象作為函數的返回結果;
posted on 2008-12-07 21:14 老狼 閱讀(923) 評論(1)  編輯 收藏 引用 所屬分類: C/C++

Feedback

# re: 淺析C++ 大三律 2008-12-17 21:40 guest
啊 這就是大三律呀 :)
學習了  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线欧美影院| 国内一区二区三区| 亚洲美女91| 亚洲国产视频一区| 美女亚洲精品| 在线性视频日韩欧美| av成人免费观看| 国产精品国产a级| 欧美一区二区三区免费视| 午夜在线视频一区二区区别| 国内成人精品2018免费看| 麻豆精品91| 欧美日韩在线播放| 欧美一区二区黄色| 久久精品欧洲| 在线一区视频| 欧美伊人久久| 9i看片成人免费高清| 亚洲一区免费观看| 亚洲国产精品久久精品怡红院| 亚洲国产日韩欧美| 国产精品男女猛烈高潮激情| 久久婷婷国产综合精品青草| 欧美激情综合网| 亚洲欧美日韩中文播放| 久久久激情视频| 亚洲一区在线观看免费观看电影高清 | 久久gogo国模裸体人体| 亚洲精品久久在线| 亚洲欧美bt| 一本大道av伊人久久综合| 亚洲欧美国产一区二区三区| 91久久中文字幕| 亚洲欧美日韩直播| 亚洲精品影视| 欧美一区亚洲| 亚洲女人天堂成人av在线| 久久久99免费视频| 午夜老司机精品| 美脚丝袜一区二区三区在线观看| 亚洲欧美电影在线观看| 免费高清在线一区| 久久久久久高潮国产精品视| 欧美精品一区在线播放| 免费不卡在线观看av| 国产精品视频一二三| 亚洲欧洲精品成人久久奇米网| 国内成人精品视频| 亚洲一本大道在线| 在线视频免费在线观看一区二区| 久久久国产精品一区二区三区| 亚洲欧美不卡| 欧美日韩亚洲成人| 亚洲人体影院| 亚洲肉体裸体xxxx137| 久久久久国内| 久久久久久久波多野高潮日日| 欧美视频中文在线看 | 亚洲一级黄色av| 久久综合九九| 麻豆成人精品| 国内精品视频666| 欧美在线亚洲综合一区| 欧美亚洲自偷自偷| 国产精品日本精品| 亚洲综合色在线| 西西裸体人体做爰大胆久久久| 欧美无乱码久久久免费午夜一区 | 久久视频在线视频| 国产午夜亚洲精品理论片色戒| 亚洲一区二区三区免费观看| 亚洲男人av电影| 国产农村妇女精品| 亚洲欧美日韩一区二区| 欧美中文字幕视频| 国产亚洲高清视频| 久久激情综合网| 免费日韩av| 亚洲精品免费看| 欧美日韩一本到| 亚洲深夜福利视频| 久久国产精品72免费观看| 国产日韩欧美一区二区三区四区| 亚洲欧美一区二区在线观看| 久久久久成人精品免费播放动漫| 黄色亚洲免费| 欧美激情五月| 中文av字幕一区| 久久精品欧美| 亚洲欧洲日本一区二区三区| 欧美日韩精品一区二区三区| 亚洲婷婷综合色高清在线| 欧美伊久线香蕉线新在线| 一色屋精品视频在线看| 欧美成人性网| 亚洲已满18点击进入久久| 久久久久久久久久看片| 亚洲国产美国国产综合一区二区| 欧美精品久久久久久| 亚洲一本视频| 欧美国产精品中文字幕| 亚洲手机成人高清视频| 国产亚洲精品成人av久久ww| 欧美激情国产高清| 亚洲欧美在线观看| 91久久综合亚洲鲁鲁五月天| 欧美一区二区三区免费看| 1024日韩| 国产精品一卡| 欧美激情视频给我| 欧美一乱一性一交一视频| 亚洲国产综合91精品麻豆| 性8sex亚洲区入口| 亚洲电影下载| 国产欧美大片| 欧美日本在线视频| 久久精品72免费观看| 在线视频亚洲一区| 亚洲国产欧美一区二区三区久久| 欧美一区二区三区免费观看视频| 亚洲精品国产品国语在线app| 国产亚洲一本大道中文在线| 欧美日韩专区| 欧美黄色一区二区| 久久综合精品一区| 欧美一区激情视频在线观看| 亚洲桃色在线一区| 亚洲精品久久视频| 亚洲电影激情视频网站| 久久天天躁夜夜躁狠狠躁2022| 亚洲欧美99| 亚洲永久在线观看| 亚洲精品免费一区二区三区| 一区二区三区中文在线观看| 国产一区二区三区的电影 | 亚洲人成7777| 在线观看中文字幕亚洲| 国产婷婷97碰碰久久人人蜜臀| 欧美日韩在线精品| 欧美日韩精品二区第二页| 欧美激情一区二区三区蜜桃视频| 久久精品二区亚洲w码| 午夜精品久久久久久久99水蜜桃| 亚洲色诱最新| 亚洲欧美精品在线| 香港久久久电影| 羞羞色国产精品| 午夜欧美大尺度福利影院在线看| 亚洲调教视频在线观看| 亚洲一区免费在线观看| 亚洲天堂成人| 午夜精品久久久久久久99黑人| 亚洲调教视频在线观看| 午夜精品成人在线| 欧美在线播放一区二区| 久久国产精品久久精品国产| 欧美在线视频日韩| 久久深夜福利| 欧美精品二区三区四区免费看视频| 欧美激情在线观看| 欧美视频在线一区| 国产偷久久久精品专区| 国产一区二区三区视频在线观看| 激情婷婷欧美| 亚洲人www| 亚洲欧美精品在线观看| 久久久久久国产精品mv| 免费在线视频一区| 亚洲黄色性网站| 亚洲午夜精品17c| 欧美尤物一区| 欧美另类在线观看| 国产麻豆精品视频| 亚洲国产va精品久久久不卡综合| 亚洲美女淫视频| 欧美在线啊v| 亚洲国产欧美一区二区三区同亚洲| 亚洲乱码精品一二三四区日韩在线 | 欧美国产精品日韩| 在线综合亚洲| 浪潮色综合久久天堂| 欧美性猛交一区二区三区精品| 国产视频一区二区三区在线观看| 亚洲黄色成人| 欧美一区二区三区视频在线| 免费在线国产精品| 亚洲网站视频福利| 免费久久久一本精品久久区| 国产精品久久| 亚洲美女在线一区| 久久久久久一区二区| 亚洲麻豆国产自偷在线| 久久久久久噜噜噜久久久精品| 欧美日韩国产综合久久| 狠狠色狠狠色综合日日91app| 亚洲伊人观看| 亚洲黄色大片| 久久狠狠久久综合桃花| 国产精品久久久久av免费| 亚洲精品视频一区|