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

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

舉例說明C++中拷貝構造函數

2020-02-24 14:24:57
字體:
來源:轉載
供稿:網友

在C++中,復制并沒有脫離其原有的意義,而是“專用”是指用現有對象創建一個新對象,下面武林技術頻道小編就給大家舉例說明C++中拷貝構造函數吧!

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;//調用=賦值運算符
}


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

以上就是舉例說明C++中拷貝構造函數,其實js.Vevb.com就是不錯的選擇,學習的方法有很多,小伙伴們可以通過武林技術頻道來詳加了解哦。

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线能观看| 日韩av在线播放资源| 亚洲美女又黄又爽在线观看| 日韩精品黄色网| 亚洲一区二区精品| 亚洲电影成人av99爱色| 成人福利视频网| 一区三区二区视频| 在线日韩中文字幕| 日韩电影免费观看在线| 国产精品美女免费看| 欧美一级片久久久久久久| 一区二区三区高清国产| 国产亚洲精品久久久久久牛牛| 成人在线激情视频| 亚洲国产精品va在线观看黑人| 日韩欧美亚洲一二三区| 欧日韩在线观看| 中文字幕日韩欧美在线| 日韩精品丝袜在线| 色久欧美在线视频观看| 久久99国产综合精品女同| 亚洲精品久久久久中文字幕二区| 欧美wwwxxxx| 在线看日韩av| 国产精品美女免费视频| 国产欧美在线视频| 日韩中文理论片| 国产网站欧美日韩免费精品在线观看| 在线看片第一页欧美| 午夜精品国产精品大乳美女| 亚洲精品影视在线观看| 国产精品久久久久国产a级| www日韩欧美| 91精品国产综合久久香蕉最新版| 91av视频在线免费观看| 国产一区二区视频在线观看| 欧美亚洲视频一区二区| 欧美在线视频网站| 久久精品免费播放| 国产性色av一区二区| 国产精品看片资源| 国产精品久久久久久网站| 91综合免费在线| 久久久精品免费视频| 中文字幕欧美精品在线| 日韩风俗一区 二区| 久久久久久久电影一区| 91精品久久久久久久久中文字幕| 在线观看亚洲视频| 国产精品久久久久久久久久久新郎| 国产精品都在这里| 国内免费久久久久久久久久久| 日韩电影在线观看中文字幕| 欧洲一区二区视频| 国产日韩换脸av一区在线观看| 亚洲成人动漫在线播放| 蜜臀久久99精品久久久久久宅男| 成人网页在线免费观看| 热久久视久久精品18亚洲精品| 在线播放日韩欧美| 色哟哟入口国产精品| 91人人爽人人爽人人精88v| 日韩av成人在线观看| 国产剧情久久久久久| 国产成人综合精品在线| 久青草国产97香蕉在线视频| 亚洲女人天堂色在线7777| 国产一级揄自揄精品视频| 久久精品国亚洲| 久久97久久97精品免视看| 久久久久久久久久久免费精品| 亚洲天堂av女优| 青青青国产精品一区二区| 亚洲美女av黄| 亚洲女同性videos| 日韩av中文在线| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美日韩一区二区三区在线| 亚洲欧美一区二区精品久久久| 美日韩精品免费观看视频| 久久久999精品| 4438全国成人免费| 色偷偷偷综合中文字幕;dd| 亚洲高清色综合| 2023亚洲男人天堂| 亚洲日本成人网| 午夜精品理论片| 国产日韩在线观看av| 欧美激情高清视频| 日韩av在线电影网| 91九色单男在线观看| 亚洲色图综合网| 国产精品久久久久久久久久ktv| 高清欧美一区二区三区| 2019日本中文字幕| 亚洲国产精品久久久久秋霞蜜臀| 国模gogo一区二区大胆私拍| 九九热精品在线| 中文字幕欧美日韩| 国产精品啪视频| 国产精品视频精品| 国内精品久久久久影院 日本资源| 久热精品视频在线观看一区| 国产精品三级美女白浆呻吟| 亚洲一级一级97网| 精品国偷自产在线| 国产成人极品视频| 精品久久久久久久久久久久| 亚洲天堂av综合网| 欧美精品久久久久久久免费观看| 精品一区二区三区四区在线| 国产一区二区三区毛片| 亚洲天堂男人的天堂| 成人黄色在线免费| 欧美日韩精品在线视频| 欧美日韩成人在线观看| 欧美高清在线播放| 97人洗澡人人免费公开视频碰碰碰| 久久久久久久91| 国产精品久久国产精品99gif| 久久久精品日本| 九九热这里只有在线精品视| 欧美极品第一页| 国产精品igao视频| 久久久国产一区二区| 亚洲一区二区久久久久久久| 亚洲老板91色精品久久| 成人写真视频福利网| 精品动漫一区二区| 日韩中文字幕国产| 国产精品视频永久免费播放| 日韩欧美亚洲一二三区| 色视频www在线播放国产成人| 91免费视频国产| 久久青草福利网站| 97视频在线观看视频免费视频| 91久久综合亚洲鲁鲁五月天| 欧美激情一级二级| 91国产高清在线| 日韩三级成人av网| 亚洲美女黄色片| 992tv成人免费视频| 国产精品成人aaaaa网站| 国产精品一久久香蕉国产线看观看| 91欧美日韩一区| 国产成人涩涩涩视频在线观看| 亚洲小视频在线| 97视频在线观看成人| 亚洲韩国青草视频| 欧美日韩免费一区| 国语自产精品视频在线看| 亚洲成人性视频| 亚洲一区中文字幕在线观看| 国产精品久久久久不卡| 精品久久久久久久久久久久久久| 国产在线视频欧美| 欧美日韩成人在线视频| 欧美亚洲另类制服自拍| 亚洲第一综合天堂另类专| 亚洲黄一区二区| 2020国产精品视频| 国产精品久久久久久亚洲影视| 亚洲欧美一区二区精品久久久|