国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

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

2019-11-11 07:51:15
字體:
供稿:網(wǎng)友

一.概念

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

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

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

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

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

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

void fun(Test t){}

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

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

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

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

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

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

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

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

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

t1 tdata<---data
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 绍兴市| 邵东县| 肃宁县| 侯马市| 临泉县| 洛扎县| 同心县| 安乡县| 平山县| 宁武县| 松江区| 盱眙县| 襄城县| 阜宁县| 兰州市| 江孜县| 浮梁县| 新闻| 泸水县| 大余县| 汝城县| 和田县| 土默特左旗| 滦平县| 广昌县| 鹰潭市| 金寨县| 花垣县| 邹平县| 天台县| 余姚市| 章丘市| 大洼县| 台东市| 大英县| 岳西县| 威信县| 潼关县| 贺兰县| 襄垣县| 花莲市|