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

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 老狼 閱讀(910) 評論(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>
            国产欧美精品在线播放| 欧美精品一区二区视频| 国产精品久久久久久五月尺| 久久久国产精品一区二区三区| 欧美阿v一级看视频| 欧美电影电视剧在线观看| 一区二区三区精品视频| 亚洲成色最大综合在线| 久久人人精品| 亚洲精品韩国| 亚洲欧美视频一区| 欧美一级二区| 亚洲大片精品永久免费| 亚洲高清自拍| 国产一级揄自揄精品视频| 久久综合综合久久综合| 亚洲一区二区三区高清 | 亚洲综合视频网| 欧美成人午夜激情在线| 亚洲精品视频在线播放| 久久婷婷国产综合尤物精品| 日韩一区二区精品| 亚洲二区免费| 久久国产精品色婷婷| 午夜精品电影| 午夜精品久久久久久久久久久| 久久国产欧美精品| 日韩午夜免费| 国产美女搞久久| 国产欧美日韩在线播放| 亚洲美女在线观看| 99riav久久精品riav| 性一交一乱一区二区洋洋av| 亚洲国产精品福利| 免费精品视频| 亚洲美女在线看| 久热精品在线| 欧美一区二区国产| 久久九九有精品国产23| 一区二区三区久久| 欧美日韩在线免费视频| 欧美日韩一区二区免费在线观看 | 亚洲国产高潮在线观看| 六月丁香综合| 麻豆国产va免费精品高清在线| 欧美国内亚洲| 国产日韩欧美精品| av72成人在线| 亚洲一区二区在线看| 亚洲欧美区自拍先锋| 欧美激情一区二区三区成人| 最近中文字幕mv在线一区二区三区四区| 欧美成人精品在线| 欧美一区二区| 国产精品久久综合| 久久中文字幕导航| 欧美日韩精品免费观看视一区二区 | 午夜亚洲伦理| 久久国产精品99国产精| 欧美另类视频| 久久亚洲图片| 国产精品欧美日韩一区| 亚洲伊人第一页| 老妇喷水一区二区三区| 羞羞漫画18久久大片| 欧美成人综合网站| 亚洲东热激情| 午夜精品一区二区三区在线视 | 国产亚洲精品久久久久久| 亚洲国语精品自产拍在线观看| 国产精品久久久久aaaa樱花| 激情成人在线视频| 亚洲欧美一区在线| 欧美伦理91i| 亚洲精品久久久蜜桃| 国产主播一区二区三区| 久热成人在线视频| 在线精品视频在线观看高清 | 亚洲一区视频| 欧美激情一区二区三级高清视频| 亚洲精品乱码久久久久久蜜桃91| 亚洲国产精品一区在线观看不卡| 国产尤物精品| 葵司免费一区二区三区四区五区| 久久久综合视频| 欧美日韩黄视频| 亚洲视频中文字幕| aa日韩免费精品视频一| 欧美日韩亚洲一区| 欧美一区二区三区播放老司机| 久久久精品国产免费观看同学| 国产日韩精品视频一区| 久久免费视频网站| 99在线|亚洲一区二区| 国产婷婷色一区二区三区| 欧美一区二区三区在线观看| 欧美激情精品久久久久久大尺度| 欧美日韩一区在线观看视频| 亚洲国产综合视频在线观看| 亚洲欧美国产精品va在线观看| 国产午夜精品视频| 欧美日韩免费区域视频在线观看| 午夜精品视频一区| 欧美一级视频免费在线观看| 一区在线视频观看| 欧美黄色日本| 久久久久免费| 欧美中文字幕精品| 国产一区二区三区久久悠悠色av| 欧美xxxx在线观看| 美女啪啪无遮挡免费久久网站| 亚洲一区二区免费在线| 亚洲激情av| 亚洲免费高清| 亚洲毛片网站| 亚洲日本欧美天堂| 91久久视频| 亚洲国产成人久久综合| 亚洲第一区色| 亚洲伦理自拍| 在线中文字幕日韩| 久色婷婷小香蕉久久| 性欧美激情精品| 久久久夜精品| 久久综合给合久久狠狠狠97色69| 欧美一级在线亚洲天堂| 久久噜噜噜精品国产亚洲综合| 久久久久久噜噜噜久久久精品| 久久国产精品久久精品国产 | 国产精品夜夜夜| 国产精品一区二区三区乱码| 国产精品视频内| 在线激情影院一区| 午夜在线一区| 亚洲第一精品久久忘忧草社区| 亚洲国产视频一区二区| 亚洲高清三级视频| 亚洲精品国久久99热| 性欧美xxxx大乳国产app| 欧美成年人网站| 亚洲影院在线| 国产精品扒开腿做爽爽爽软件| 久久成人羞羞网站| 欧美日韩福利在线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美日韩一区精品| 极品少妇一区二区三区| 亚洲欧美综合网| 在线午夜精品| 国产精品私拍pans大尺度在线| 亚洲人线精品午夜| 一二美女精品欧洲| 欧美成人国产| 免费不卡视频| 亚洲精选在线观看| 亚洲电影在线看| 免费在线观看成人av| 欧美丰满高潮xxxx喷水动漫| 国内揄拍国内精品少妇国语| 欧美一区91| 老司机精品视频一区二区三区| 国产午夜亚洲精品不卡| 亚洲午夜精品一区二区| 久久精品国产综合精品| 午夜精品视频一区| 伊大人香蕉综合8在线视| 欧美大片在线观看一区二区| 欧美成人a视频| 亚洲欧美在线x视频| 欧美一区二区啪啪| 亚洲精一区二区三区| 在线亚洲一区观看| 国语精品中文字幕| 亚洲日韩第九十九页| 国产精品久久久久久久app| 久久久精品日韩欧美| 国产精品欧美一区喷水| 亚洲伊人观看| 亚洲精品久久久久久久久久久久久 | 美女国产精品| 欧美日韩在线高清| 免费在线国产精品| 国产精品护士白丝一区av| 欧美大片18| 一区二区三区在线视频观看| 99热精品在线观看| 日韩一级黄色片| 免费成人毛片| 另类天堂av| 亚洲国产欧美一区| 老司机免费视频一区二区| 国产精品成人免费视频 | 欧美一区二区三区在线观看视频| 中文亚洲字幕| 亚洲资源在线观看| 亚洲免费在线| 国产精品日日摸夜夜添夜夜av| 亚洲精品在线一区二区| 日韩图片一区| 国产精品人人做人人爽 |