亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中拷貝構造函數的總結詳解

2020-01-26 15:49:28
字體:
來源:轉載
供稿:網友

1.什么是拷貝構造函數:
拷貝構造函數嘛,當然就是拷貝和構造了。(其實很多名字,只要靜下心來想一想,就真的是顧名思義呀)拷貝又稱復制,因此拷貝構造函數又稱復制構造函數。百度百科上是這樣說的:拷貝構造函數,是一種特殊的構造函數,它由編譯器調用來完成一些基于同一類的其他對象的構建及初始化。其唯一的參數(對象的引用)是不可變的(const類型)。此函數經常用在函數調用時用戶定義類型的值傳遞及返回。

2.拷貝構造函數的形式

復制代碼 代碼如下:

Class X
{
public:
  X();
  X(const X&);//拷貝構造函數
}

2.1為什么拷貝構造參數是引用類型?
其原因如下:當一個對象以傳遞值的方式傳一個函數的時候,拷貝構造函數自動被調用來生成函數中的對象(符合拷貝構造函數調用的情況)。如果一個對象是被傳入自己的拷貝構造函數,它的拷貝構造函數將會被調用來拷貝這個對象,這樣復制才可以傳入它自己的拷貝構造函數,這會導致無限循環直至棧溢出(Stack Overflow)。

3.拷貝構造函數調用的三種形式
3.1.一個對象作為函數參數,以值傳遞的方式傳入函數體;
3.2.一個對象作為函數返回值,以值傳遞的方式從函數返回;
3.3.一個對象用于給另外一個對象進行初始化(常稱為復制初始化)。

總結:當某對象是按值傳遞時(無論是作為函數參數,還是作為函數返回值),編譯器都會先建立一個此對象的臨時拷貝,而在建立該臨時拷貝時就會調用類的拷貝構造函數。

4.深拷貝和淺拷貝
如果在類中沒有顯式地聲明一個拷貝構造函數,那么,編譯器將會自動生成一個默認的拷貝構造函數,該構造函數完成對象之間的位拷貝。(位拷貝又稱淺拷貝,后面將進行說明。)自定義拷貝構造函數是一種良好的編程風格,它可以阻止編譯器形成默認的拷貝構造函數,提高源碼效率。

在某些狀況下,類內成員變量需要動態開辟堆內存,如果實行位拷貝,也就是把對象里的值完全復制給另一個對象,如A=B。這時,如果B中有一個成員變量指針已經申請了內存,那A中的那個成員變量也指向同一塊內存。這就出現了問題:當B把內存釋放了(如:析構),這時A內的指針就是野指針了,出現運行錯誤。事實上這就要用到深拷貝了,要自定義拷貝構造函數。

深拷貝和淺拷貝可以簡單理解為:如果一個類擁有資源,當這個類的對象發生復制過程的時候,資源重新分配,這個過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝。

下面舉個深拷貝的例子。

復制代碼 代碼如下:

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

淺拷貝資源后在釋放資源的時候會產生資源歸屬不清的情況導致程序運行出錯。一定要注意類中是否存在指針成員。

5.拷貝構造函數與“=“賦值運算符
例如:
復制代碼 代碼如下:

class CExample
{};
int main()
{
CExample e1 = new CExample;
CExample e2 = e1;//調用拷貝構造函數
CExample e3(e1);//調用拷貝構造函數
CExample e4;
e4 = e1;//調用=賦值運算符
}

通常的原則是:①對于凡是包含動態分配成員或包含指針成員的類都應該提供拷貝構造函數;②在提供拷貝構造函數的同時,還應該考慮重載"="賦值操作符號。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩第一视频| 日韩中文视频免费在线观看| 91牛牛免费视频| 午夜精品久久久久久久99热| 日韩欧美国产网站| 日韩精品视频免费专区在线播放| 亚洲夜晚福利在线观看| 国产一区二区三区直播精品电影| 久久亚洲精品视频| 社区色欧美激情 | 中文字幕在线日韩| 97超级碰碰碰| 久久91亚洲精品中文字幕奶水| 精品呦交小u女在线| 日韩精品视频免费| 亚洲一区二区三区视频播放| 国产精品你懂得| 欧美性猛交xxxx免费看| 日韩福利视频在线观看| 国产精品久久久久久久久久尿| 久久精品福利视频| 久久精品视频中文字幕| 国产精品∨欧美精品v日韩精品| 亚洲人成网站999久久久综合| 亚洲综合一区二区不卡| 亚洲女人天堂视频| 精品久久久久久国产91| 成人精品视频99在线观看免费| 久久久国产成人精品| 欧美大片欧美激情性色a∨久久| 日韩免费观看视频| 久久综合伊人77777尤物| 欧美理论电影在线播放| 精品国产乱码久久久久久虫虫漫画| 欧美电影电视剧在线观看| 久久欧美在线电影| 亚洲欧美另类中文字幕| 在线视频欧美日韩| 欧美激情一区二区三区高清视频| 亚洲伊人久久大香线蕉av| 日韩av在线免播放器| 亚洲网站在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品久久久一区二区三区| 日韩精品久久久久久久玫瑰园| 色偷偷av一区二区三区| 亚洲第一精品夜夜躁人人爽| 欧美福利视频在线| 亚洲三级 欧美三级| 久久亚洲成人精品| 欧美激情xxxxx| 4388成人网| 日韩欧美在线播放| 中文字幕久精品免费视频| 亚洲国产高清高潮精品美女| 一本色道久久综合狠狠躁篇怎么玩| 日韩在线视频播放| 成人欧美一区二区三区黑人| 日韩欧美在线免费| 日韩成人网免费视频| 国产精品嫩草影院久久久| 国产精品久久久久99| 欧美激情视频在线免费观看 欧美视频免费一| www.日韩系列| 国产一区二区美女视频| 成人精品福利视频| 色偷偷av一区二区三区乱| 国内精品久久久久久影视8| 欧美日韩免费一区| 亚洲精品按摩视频| 国产成人综合精品在线| 91中文字幕在线观看| 国产精品69久久久久| 欧美大片免费观看在线观看网站推荐| 日韩亚洲欧美中文在线| 日韩综合视频在线观看| 美日韩在线视频| 亚洲国产精品网站| 久久久久久久激情视频| 久久视频免费观看| 国产精品夜间视频香蕉| 国产一区二区三区毛片| 亚洲国模精品一区| 国外成人免费在线播放| 亚洲精品视频网上网址在线观看| 在线激情影院一区| 亚洲精品资源美女情侣酒店| 97在线观看视频国产| 亚洲天堂av女优| www.亚洲一区| 国产精品自拍偷拍视频| 亚洲一区二区三区四区视频| 亚洲视频国产视频| 国产亚洲一区精品| 欧美富婆性猛交| 欧美猛男性生活免费| 1769国内精品视频在线播放| 在线日韩日本国产亚洲| 久久久久久久影院| 欧美高清在线观看| 久久av红桃一区二区小说| 欧美在线视频观看免费网站| 国产女精品视频网站免费| 国产成人精品一区二区三区| 国产热re99久久6国产精品| 98精品国产高清在线xxxx天堂| 国产精品三级在线| 久久99精品久久久久久噜噜| 亚洲三级免费看| 色婷婷av一区二区三区在线观看| 亚洲国产欧美在线成人app| 精品毛片三在线观看| 在线亚洲国产精品网| 国产精品对白刺激| 日韩视频免费大全中文字幕| 亚洲国产欧美日韩精品| 精品国产一区av| 国产精品入口免费视频一| 欧美性理论片在线观看片免费| 亚洲精品免费一区二区三区| 国产精品精品视频一区二区三区| 在线视频日本亚洲性| 亚洲精品xxx| 日韩69视频在线观看| 欧美大胆a视频| 国产婷婷97碰碰久久人人蜜臀| 久久人人97超碰精品888| 国产精品免费电影| 俺去了亚洲欧美日韩| 久久视频在线视频| 成人天堂噜噜噜| 国产精品久在线观看| 亚洲第一视频网站| 国产色综合天天综合网| 91在线视频精品| 国内精品美女av在线播放| 国产成人精品久久久| 亚洲va欧美va国产综合久久| 久久资源免费视频| 欧美性猛交99久久久久99按摩| 曰本色欧美视频在线| 国产精品久久电影观看| 福利一区福利二区微拍刺激| 亚洲第一天堂av| 亚洲欧洲偷拍精品| 欧美亚洲另类激情另类| 久久久久久av| 日韩欧美在线视频日韩欧美在线视频| 欧美成人精品不卡视频在线观看| 欧洲精品久久久| 欧美午夜精品久久久久久久| 91精品国产91久久久久久最新| 中文字幕欧美日韩在线| 久久亚洲欧美日韩精品专区| 成人免费在线视频网站| 成人黄色大片在线免费观看| 91黑丝高跟在线| 不用播放器成人网| 色与欲影视天天看综合网| 欧美在线视频免费| 欧美在线欧美在线| 日韩成人黄色av| 久久久久日韩精品久久久男男| 91精品国产高清|