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

隨筆 - 74, 文章 - 0, 評論 - 26, 引用 - 0
數(shù)據(jù)加載中……

C++類對象的拷貝構(gòu)造函數(shù)分析

對于普通類型的對象來說,它們之間的復(fù)制是很簡單的,例如:

int a=100;
int b=a;

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

#include <iostream>
using namespace std;
class CA
{
 public:
  CA(int b)
  {
   a=b;
  }
  void Show ()
  {
   cout<<a<<endl;
  }
 private:
  int a;
};

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

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

#include <iostream>
using namespace std;
class CA
{
 public:
  CA(int b)
  {
   a=b;
  }
  CA(const CA& C)
  {
   a=C.a;
  }
  void Show()
  {
   cout<<a<<endl;
  }
 private:
  int a;
};

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

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

  當(dāng)用一個已初始化過了的自定義類類型對象去初始化另一個新構(gòu)造的對象的時候,拷貝構(gòu)造函數(shù)就會被自動調(diào)用。也就是說,當(dāng)類的對象需要拷貝時,拷貝構(gòu)造函數(shù)將會被調(diào)用。以下情況都會調(diào)用拷貝構(gòu)造函數(shù):

  一個對象以值傳遞的方式傳入函數(shù)體

  一個對象以值傳遞的方式從函數(shù)返回

  一個對象需要通過另外一個對象進(jìn)行初始化。

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

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

  淺拷貝和深拷貝

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

  深拷貝和淺拷貝可以簡單理解為:如果一個類擁有資源,當(dāng)這個類的對象發(fā)生復(fù)制過程的時候,資源重新分配,這個過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝。下面舉個深拷貝的例子。

#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;
}

  好吧,就說這些,希望本文能對您有所幫助。

posted on 2006-12-01 08:52 井泉 閱讀(228) 評論(0)  編輯 收藏 引用 所屬分類: 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>
            亚洲高清色综合| 亚洲欧美国产va在线影院| 韩国av一区二区三区在线观看| 久久精品国产综合| 欧美日韩国产区| 欧美一区二区三区日韩| 国产一区二区精品久久99| 亚洲永久在线| 一区二区三区四区蜜桃| 欧美日本久久| 一本大道久久a久久综合婷婷| 亚洲乱码精品一二三四区日韩在线| 国产美女精品免费电影| 国产视频一区在线| 日韩视频一区二区在线观看 | 美女视频黄 久久| 国产精品区一区| 久久久久.com| 性做久久久久久久久| 久久精品免费观看| 亚洲网站在线播放| 在线播放视频一区| 亚洲精品中文字| 亚洲婷婷综合色高清在线| 亚洲欧美日韩精品久久奇米色影视| 欧美一区观看| 亚洲国产岛国毛片在线| 夜夜爽av福利精品导航| 欧美一区二区视频在线观看| 欧美xart系列高清| 亚洲欧美激情在线视频| 久久九九久精品国产免费直播| 欧美高清视频一区| 亚洲欧美另类久久久精品2019| 久久久水蜜桃| 国产精品国产三级国产普通话三级 | 在线观看av不卡| 一区二区三区日韩精品视频| 久久久久久一区二区三区| 欧美国产日韩在线| 午夜久久久久久| 欧美日韩免费观看一区二区三区 | 午夜亚洲一区| 欧美私人网站| 99精品视频免费全部在线| 久久综合色播五月| 亚洲免费视频网站| 欧美色网在线| 一本色道久久综合亚洲二区三区| 老鸭窝91久久精品色噜噜导演| 亚洲理论电影网| 久久蜜桃资源一区二区老牛| 国产精品国产亚洲精品看不卡15| 亚洲国产欧美久久| 欧美日韩精品系列| 在线观看亚洲| 久久亚裔精品欧美| 中文日韩在线| 亚洲一区二区三区中文字幕| 一区二区三区鲁丝不卡| 老司机凹凸av亚洲导航| 亚洲欧美日韩国产一区二区| 亚洲国产精品美女| 国产伦精品一区二区| 一区二区三区欧美成人| 欧美v国产在线一区二区三区| 亚洲主播在线播放| 国产精品亚洲片夜色在线| 一区二区三区成人| 亚洲美女淫视频| 亚洲精品韩国| 欧美jizz19性欧美| 亚洲日本国产| 最近看过的日韩成人| 麻豆成人在线| 亚洲三级视频在线观看| 亚洲福利视频二区| 欧美日韩国产美| 亚洲性av在线| 欧美亚洲在线播放| 136国产福利精品导航| 亚洲黄色毛片| 国产精品女主播一区二区三区| 亚洲欧美日韩精品久久| 欧美一区2区三区4区公司二百| 国内揄拍国内精品久久| 暖暖成人免费视频| 欧美另类女人| 久久精品日韩| 欧美成人tv| 亚洲专区欧美专区| 久久国产精品久久久久久| 亚洲激情av在线| 中日韩美女免费视频网站在线观看| 国产精品日韩一区| 欧美激情亚洲一区| 国产精品久久久久999| 免费一区视频| 国产精品啊v在线| 一区二区亚洲精品| 亚洲三级网站| 国内久久视频| 亚洲精品乱码久久久久久按摩观| 欧美激情综合在线| 亚洲第一成人在线| 国产精品一卡二| 夜夜嗨av一区二区三区中文字幕| **网站欧美大片在线观看| 日韩视频在线观看| 亚洲婷婷免费| 国产一区导航| 欧美激情区在线播放| 亚洲午夜视频在线观看| 欧美在线视频免费播放| 国产嫩草一区二区三区在线观看| 国内揄拍国内精品久久| 99精品视频网| 在线观看亚洲精品视频| 一区二区91| 亚洲精品久久久久| 久久国产视频网站| 午夜精品国产更新| 欧美日韩喷水| 欧美激情第10页| 一区二区自拍| 欧美在线观看一区二区| 性欧美激情精品| 欧美体内she精视频| 亚洲国产天堂久久综合网| 国色天香一区二区| 欧美在线视频在线播放完整版免费观看 | 亚洲黄色尤物视频| 国内久久精品| 欧美一区二区三区精品电影| 亚洲欧美另类中文字幕| 久久都是精品| 欧美激情网站在线观看| 欧美在线视频一区二区| 欧美日韩亚洲一区二区| 亚洲福利视频一区二区| 尤妮丝一区二区裸体视频| 午夜一区二区三区在线观看| 午夜精品久久久久久久白皮肤 | 亚洲电影观看| 亚洲精品一区二区三区蜜桃久| 小黄鸭精品密入口导航| 久久久久久电影| 免费观看成人网| 亚洲三级视频在线观看| 国产视频观看一区| 国产精品综合av一区二区国产馆| 欧美巨乳在线| 欧美性大战久久久久久久蜜臀| 欧美日韩在线不卡| 国产亚洲精品久久飘花| 亚洲精品久久| 久久精品国产96久久久香蕉| 国产精品视频第一区| 亚洲专区在线视频| 久久精品人人做人人爽电影蜜月| 国内外成人免费激情在线视频网站 | 欧美激情精品| 一本久道久久综合中文字幕| 午夜精品久久久久久久蜜桃app| 国产精品午夜在线| 久久精品国产久精国产爱| 亚洲电影下载| 亚洲欧美国产日韩中文字幕| 国产日韩欧美中文| 欧美国产日韩一区二区在线观看 | 99re热精品| 国产欧美 在线欧美| 久久综合图片| 亚洲午夜av在线| 另类激情亚洲| 在线视频一区二区| 一色屋精品视频免费看| 欧美日韩一级视频| 久久久久久久久久久久久女国产乱| 亚洲国产三级在线| 理论片一区二区在线| 亚洲欧美在线一区二区| 亚洲成人中文| 国产区日韩欧美| 欧美日韩另类国产亚洲欧美一级| 亚洲一区在线观看免费观看电影高清| 麻豆九一精品爱看视频在线观看免费 | 亚洲一区视频| 亚洲欧洲三级电影| 老**午夜毛片一区二区三区| 亚洲一区二区黄| 亚洲免费观看视频| 韩国一区二区三区美女美女秀| 欧美午夜精品| 久久久在线视频| 欧美在线视频全部完| 久久亚洲色图| 亚洲精品网址在线观看| 亚洲精品视频一区二区三区| 欧美视频专区一二在线观看|