麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C++初級主題--(5)拷貝構(gòu)造函數(shù)

2019-11-14 08:44:07
字體:
供稿:網(wǎng)友

一.概念

同一個類的對象在內(nèi)存中有完全相同的結(jié)構(gòu),如果作為一個整體進行復(fù)制或稱拷貝是完全可行的。這個拷貝過程只需要拷貝數(shù)據(jù)成員,而函數(shù)成員是共用的(只有一份拷貝)。在建立對象時可用同一類的另一個對象來初始化該對象,這時所用的構(gòu)造函數(shù)稱為拷貝構(gòu)造函數(shù)(Copy Constructor)。

int main(){ Test t1(10); Test t(t1); //調(diào)用拷貝構(gòu)造函數(shù) Test t2 = t1; //調(diào)動拷貝構(gòu)造函數(shù)}

二.詳解拷貝構(gòu)造函數(shù)

1.調(diào)動拷貝構(gòu)造函數(shù)的情況 (1)對象初始化對象調(diào)動拷貝構(gòu)造函數(shù)

區(qū)別初始化與賦值

Test t(10);Test t1;t1 = t; //賦值Test t2(t);//初始化Test t3 = t;//初始化

另外兩種情況 (2)當(dāng)函數(shù)的形參是類的對象,調(diào)用函數(shù)時,進行形參與實參結(jié)合時使用。這時要在內(nèi)存新建立一個局部對象,并把實參拷貝到新的對象中。

void fun(Test t){}

(3)當(dāng)函數(shù)的返回值是類對象,函數(shù)執(zhí)行完成返回調(diào)用者時使用。理由也是要建立一個臨時對象中,再返回調(diào)用者。

Test fun(){ Test t; return t;}

因為局部對象在離開建立它的函數(shù)時就消亡了,不可能在返回調(diào)用函數(shù)后繼續(xù)生存,所以在處理這種情況時,編譯系統(tǒng)會在調(diào)用函數(shù)的表達式中創(chuàng)建一個無名臨時對象,該臨時對象的生存周期只在函數(shù)調(diào)用處的表達式中。所謂return 對象,實際上是調(diào)用拷貝構(gòu)造函數(shù)把該對象的值拷入臨時對象(對象初始化對象),最終返回的是臨時對象。如果返回的是變量,處理過程類似,只是不調(diào)用構(gòu)造函數(shù)

這三種情況無疑都是對象初始化對象而已.

2.拷貝構(gòu)造函數(shù)的參數(shù)–采用常引用

//拷貝構(gòu)造函數(shù)的一般形式Test(const Test &t){ data = t.data;}

(1)為什么采用引用傳遞參數(shù) 如果把一個真實的類對象作為參數(shù)傳遞到拷貝構(gòu)造函數(shù),此時,參數(shù)表里又是用對象初始化對象,調(diào)動拷貝構(gòu)造函數(shù)。如此往復(fù),造成無限遞歸。 如下圖: 這里寫圖片描述

(2)為什么是常引用 常引用就使得被拷貝的類對象不能被隨意修改,保證信息不被丟失。當(dāng)然,你可以不用引用。

3.默認拷貝構(gòu)造函數(shù)的功能 將對應(yīng)的成員值進行拷貝

t1 tdata<---data
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 香蕉国产片 | 成年免费观看视频 | 久久久av亚洲男天堂 | 日本黄色一级视频 | 久草亚洲视频 | 亚州精品国产 | 成人资源在线观看 | 国产一级一国产一级毛片 | 久久国产乱子伦精品 | 经典三级av在线 | 国产成年人在线观看 | 精品国产一区二区三区久久久 | 2017亚洲男人天堂 | 日本精品黄色 | 操毛片 | 免费久久精品 | 国产精品一区视频 | 中文字幕精品在线播放 | 男女无遮挡羞羞视频 | 色中色在线播放 | 一级做受毛片免费大片 | 全免费午夜一级毛片真人 | 日本黄色免费片 | 九九热在线视频观看 | 麻豆国产网站 | 欧美成人视| 久久亚洲网| 欧美在线观看视频网站 | 一级免费大片 | 国产成人精品区 | www.91sese | 99日韩精品视频 | 成人在线视频免费播放 | 国产精品一区二区羞羞答答 | 美国一级免费视频 | 免费在线观看国产精品 | 中文字幕网址 | 国产成人精品自拍视频 | 日日摸夜夜骑 | 性爱视频免费 | 久久影院免费观看 |