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

積木

No sub title

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_6056c8830100zh1c.html

對(duì)于普通類(lèi)型的對(duì)象來(lái)說(shuō),它們之間的復(fù)制是很簡(jiǎn)單的,例如:

int a=88;
int b=a;
而類(lèi)對(duì)象與普通對(duì)象不同,類(lèi)對(duì)象內(nèi)部結(jié)構(gòu)一般較為復(fù)雜,存在各種成員變量。下面看一個(gè)類(lèi)對(duì)象拷貝的簡(jiǎn)單例子。

#include <iostream>
using namespace std;

class
CExample
{
private
:
 
int
a;
public
:
 CExample(
int
b)
 
{ a=b;}
 
void Show ()
 
{
cout
<<a<<
endl;
}

}
;

int
main()
{
 CExample A(
100
);
 CExample B
=
A;
 B.Show ();
 
return 0
;
}

運(yùn)行程序,屏幕輸出100。從以上代碼的運(yùn)行結(jié)果可以看出,系統(tǒng)為對(duì)象B分配了內(nèi)存并完成了與對(duì)象A的復(fù)制過(guò)程。就類(lèi)對(duì)象而言,相同類(lèi)型的類(lèi)對(duì)象是通過(guò)拷貝構(gòu)造函數(shù)來(lái)完成整個(gè)復(fù)制過(guò)程的。下面舉例說(shuō)明拷貝構(gòu)造函數(shù)的工作過(guò)程。

#include <iostream>
using namespace std;

class
CExample
{
private
:
int
a;
public
:
CExample(
int
b)
{ a=b;}

CExample(
const CExample& C)
{
a
=
C.a;
}

void Show ()
{
cout
<<a<<
endl;
}

}
;

int
main()
{
CExample A(
100
);
CExample B
=
A;
B.Show ();
return 0
;
}

CExample(const CExample& C)就是我們自定義的拷貝構(gòu)造函數(shù)。可見(jiàn),拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),函數(shù)的名稱(chēng)必須和類(lèi)名稱(chēng)一致,它的唯一的一個(gè)參數(shù)是本類(lèi)型的一個(gè)引用變量,該參數(shù)是const類(lèi)型,不可變的。例如:類(lèi)X的拷貝構(gòu)造函數(shù)的形式為X(X& x)。

當(dāng)用一個(gè)已初始化過(guò)了的自定義類(lèi)類(lèi)型對(duì)象去初始化另一個(gè)新構(gòu)造的對(duì)象的時(shí)候,拷貝構(gòu)造函數(shù)就會(huì)被自動(dòng)調(diào)用。也就是說(shuō),當(dāng)類(lèi)的對(duì)象需要拷貝時(shí),拷貝構(gòu)造函數(shù)將會(huì)被調(diào)用。以下情況都會(huì)調(diào)用拷貝構(gòu)造函數(shù):
一個(gè)對(duì)象以值傳遞的方式傳入函數(shù)體
一個(gè)對(duì)象以值傳遞的方式從函數(shù)返回
一個(gè)對(duì)象需要通過(guò)另外一個(gè)對(duì)象進(jìn)行初始化。

如果在類(lèi)中沒(méi)有顯式地聲明一個(gè)拷貝構(gòu)造函數(shù),那么,編譯器將會(huì)自動(dòng)生成一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù),該構(gòu)造函數(shù)完成對(duì)象之間的位拷貝。位拷貝又稱(chēng)淺拷貝,后面將進(jìn)行說(shuō)明。

自定義拷貝構(gòu)造函數(shù)是一種良好的編程風(fēng)格,它可以阻止編譯器形成默認(rèn)的拷貝構(gòu)造函數(shù),提高源碼效率。

淺拷貝和深拷貝

  在某些狀況下,類(lèi)內(nèi)成員變量需要?jiǎng)討B(tài)開(kāi)辟堆內(nèi)存,如果實(shí)行位拷貝,也就是把對(duì)象里的值完全復(fù)制給另一個(gè)對(duì)象,如A=B。這時(shí),如果B中有一個(gè)成員變量指針已經(jīng)申請(qǐng)了內(nèi)存,那A中的那個(gè)成員變量也指向同一塊內(nèi)存。這就出現(xiàn)了問(wèn)題:當(dāng)B把內(nèi)存釋放了(如:析構(gòu)),這時(shí)A內(nèi)的指針就是野指針了,出現(xiàn)運(yùn)行錯(cuò)誤。

  深拷貝和淺拷貝可以簡(jiǎn)單理解為:如果一個(gè)類(lèi)擁有資源,當(dāng)這個(gè)類(lèi)的對(duì)象發(fā)生復(fù)制過(guò)程的時(shí)候,資源重新分配,這個(gè)過(guò)程就是深拷貝,反之,沒(méi)有重新分配資源,就是淺拷貝。下面舉個(gè)深拷貝的例子。

#include <iostream>
using namespace std;
class CA
{
 public:
  CA(int b,char* cstr)
  {
   a=b;
   str=new char[b];
   strcpy(str,cstr);
  }
  CA(const CA& C)
  {
   a=C.a;
   str=new char[a]; //深拷貝
   if(str!=0)
    strcpy(str,C.str);
  }
  void Show()
  {
   cout<<str<<endl;
  }
  ~CA()
  {
   delete str;
  }
 private:
  int a;
  char *str;
};

int main()
{
 CA A(10,"Hello!");
 CA B=A;
 B.Show();
 return 0;
}

深拷貝和淺拷貝的定義可以簡(jiǎn)單理解成:如果一個(gè)類(lèi)擁有資源(堆,或者是其它系統(tǒng)資源),當(dāng)這個(gè)類(lèi)的對(duì)象發(fā)生復(fù)制過(guò)程的時(shí)候,這個(gè)過(guò)程就可以叫做深拷貝,反之對(duì)象存在資源,但復(fù)制過(guò)程并未復(fù)制資源的情況視為淺拷貝。

淺拷貝資源后在釋放資源的時(shí)候會(huì)產(chǎn)生資源歸屬不清的情況導(dǎo)致程序運(yùn)行出錯(cuò)。

Test(Test &c_t)是自定義的拷貝構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)的名稱(chēng)必須與類(lèi)名稱(chēng)一致,函數(shù)的形式參數(shù)是本類(lèi)型的一個(gè)引用變量,且必須是引用。

當(dāng)用一個(gè)已經(jīng)初始化過(guò)了的自定義類(lèi)類(lèi)型對(duì)象去初始化另一個(gè)新構(gòu)造的對(duì)象的時(shí)候,拷貝構(gòu)造函數(shù)就會(huì)被自動(dòng)調(diào)用,如果你沒(méi)有自定義拷貝構(gòu)造函數(shù)的時(shí)候,系統(tǒng)將會(huì)提供給一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù)來(lái)完成這個(gè)過(guò)程,上面代碼的復(fù)制核心語(yǔ)句就是通過(guò)Test(Test &c_t)拷貝構(gòu)造函數(shù)內(nèi)的p1=c_t.p1;語(yǔ)句完成的。
posted on 2013-03-15 17:49 Jacc.Kim 閱讀(339) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): VC / C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区| 久久婷婷综合激情| 精品成人国产| 毛片基地黄久久久久久天堂| 久久精品人人爽| 在线播放一区| 欧美成人视屏| 鲁大师成人一区二区三区| 在线精品亚洲| 亚洲国产导航| 欧美裸体一区二区三区| 亚洲午夜精品在线| 在线视频日韩精品| 国产精品久久久久久久久久免费| 亚洲欧美另类中文字幕| 亚洲欧美另类综合偷拍| 国产一区亚洲一区| 美国十次了思思久久精品导航| 男女精品网站| 亚洲视频一区二区| 欧美一区午夜精品| 亚洲三级免费| 国产精品扒开腿做爽爽爽视频 | 亚洲一区二区三区成人在线视频精品| 亚洲国产精品精华液2区45| 欧美精品一区二区三区久久久竹菊 | 性感少妇一区| 午夜一区二区三区不卡视频| 精品福利电影| 日韩亚洲视频在线| 亚洲国产欧美另类丝袜| 亚洲欧美日韩精品久久久久| 亚洲国产激情| 国产伦精品一区二区三区视频孕妇| 欧美区在线观看| 欧美一级二区| 久久综合成人精品亚洲另类欧美| 亚洲美女视频在线免费观看| 亚洲综合视频1区| 欧美成人午夜激情视频| 欧美电影在线| 久久国产精品色婷婷| 欧美不卡福利| 久久www免费人成看片高清| 久久精品国产99| 久久久水蜜桃| 亚洲欧美福利一区二区| 久久精品一区二区三区不卡| 日韩午夜在线电影| 欧美在线视频在线播放完整版免费观看 | 久久久久久网站| 亚洲欧美经典视频| 免费黄网站欧美| 欧美亚洲一区在线| 欧美另类高清视频在线| 久久综合中文| 国产精品一二一区| 日韩天堂av| 亚洲青涩在线| 久久久久综合| 久久久在线视频| 国产欧美精品日韩精品| 一区二区高清| 亚洲午夜视频在线| 欧美大学生性色视频| 久久一区二区三区av| 国产精品视频免费| 亚洲精品一区中文| 欧美人成在线视频| 欧美高清在线播放| 精品福利av| 欧美亚洲免费电影| 欧美亚洲视频在线观看| 欧美在线精品一区| 欧美久久精品午夜青青大伊人| 久久精品国产精品亚洲精品| 国产精品免费福利| 亚洲精品一区二区网址| 亚洲欧洲午夜| 久久久国产一区二区| 欧美亚洲视频| 欧美在线亚洲| 一区二区三区精密机械公司 | 亚洲福利国产精品| 美女精品国产| 亚洲一区二区黄| 欧美精品一区二区精品网| 国产精品看片你懂得| 国内精品美女在线观看| 一本久道久久综合狠狠爱| 亚洲高清久久网| 亚洲美女av黄| 国产精品系列在线播放| 鲁大师成人一区二区三区| 亚洲欧洲日本mm| 久久精品国产清自在天天线 | 亚洲高清资源综合久久精品| 欧美一区二区视频在线| 激情婷婷久久| 国产精品美女www爽爽爽视频| 欧美mv日韩mv国产网站| 欧美在线观看日本一区| 99国产精品国产精品久久| 另类国产ts人妖高潮视频| 亚洲免费视频成人| 在线一区二区三区四区| 亚洲精品一二| 亚洲第一精品电影| 国产日韩欧美精品| 国产精品国产三级国产普通话99| 欧美电影免费网站| 免费日韩成人| 久久伊人免费视频| 欧美一区精品| 欧美一区二区三区久久精品| 亚洲无线一线二线三线区别av| 亚洲日本aⅴ片在线观看香蕉| 免费看精品久久片| 久久久久综合一区二区三区| 欧美在线国产精品| 午夜一级久久| 亚欧成人在线| 午夜精品亚洲一区二区三区嫩草| 亚洲视频一起| 亚洲免费在线播放| 性久久久久久| 欧美一区免费| 久久久久久成人| 久久久欧美一区二区| 久久在线视频在线| 久热精品视频在线| 亚洲视频一区二区在线观看| 亚洲高清在线播放| 久久精品72免费观看| 久久天堂成人| 亚洲欧美资源在线| 韩国一区电影| 亚洲男人的天堂在线aⅴ视频| 亚洲国产精品久久91精品| 亚洲午夜91| 欧美中文字幕视频| 午夜视频一区二区| 亚洲男人天堂2024| 一区二区av| 亚洲影音先锋| 欧美一区二区在线免费播放| 久久精品日产第一区二区| 久久久99爱| 欧美成人首页| 在线视频一区二区| 欧美一区免费| 欧美成人在线影院| 欧美日韩精品免费看| 国产精品久久久久久久久久免费 | 欧美1区视频| 亚洲国产美女精品久久久久∴| 亚洲欧洲日夜超级视频| 亚洲深夜福利在线| 久久精品成人| 欧美激情精品久久久久久大尺度| 国产精品久久久久9999吃药| 午夜日本精品| 亚洲欧美国产77777| 性伦欧美刺激片在线观看| 99国产精品视频免费观看| 免费不卡在线观看| 久久综合久久久久88| 亚洲毛片av| 国产精品视频免费观看www| 国产一区三区三区| 亚洲免费成人av| 欧美一区三区二区在线观看| 欧美国产日韩一区二区| 久久激情视频| 亚洲素人在线| 欧美一区视频| 亚洲国产精品久久| 国产精品久久久爽爽爽麻豆色哟哟| 午夜久久福利| 99亚洲伊人久久精品影院红桃| 久久久久在线观看| 亚洲在线观看免费视频| 依依成人综合视频| 国产精品午夜在线观看| 国产一区再线| 午夜免费久久久久| 亚洲专区欧美专区| 欧美激情四色 | 国产日韩精品综合网站| 艳妇臀荡乳欲伦亚洲一区|