中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

c/c++拷貝構(gòu)造函數(shù)和關(guān)鍵字explicit詳解

關(guān)鍵字explicit

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專(zhuān)業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十多年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都上千家客戶(hù)提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開(kāi)發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷(xiāo)型網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),同時(shí)也為不同行業(yè)的客戶(hù)提供做網(wǎng)站、成都網(wǎng)站制作的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選成都創(chuàng)新互聯(lián)公司。

修飾構(gòu)造方法的關(guān)鍵字,加上了,就告訴編譯器,不可以隱式初始化對(duì)象;不加就可以隱式初始化對(duì)象;
下面的代碼是可以正常編譯執(zhí)行的,但是加了關(guān)鍵字explicit,編譯就會(huì)錯(cuò)我,因?yàn)門(mén)est t = 100;是隱式初始化對(duì)象,但是如果加上強(qiáng)制類(lèi)型轉(zhuǎn)換后,就不會(huì)有錯(cuò)誤了。

強(qiáng)制類(lèi)型轉(zhuǎn)換:Test t = (Test)100;

class Test{
public:
 Test(int d):data(d){//explicit 
  cout << "C:" << this << endl;
 }
}
int main(){
 Test t = 100;
}
拷貝構(gòu)造函數(shù)如果加上了explicit,下面的語(yǔ)句就無(wú)法編譯通過(guò);不加可以。
class Test{
public:
 //拷貝構(gòu)造函數(shù)
 explicit Test(const Test &t){
  data = t.data;
 }
 int getData(){
  return data;
 }
private:
 int data;
};
void test(Test x){

}
int main(){
 Test t2(t1);//調(diào)用拷貝構(gòu)造函數(shù)                    
 //Test t3 = t2;//編譯不過(guò) 
 //test(t2);//編譯不過(guò) 
}

觸發(fā)拷貝構(gòu)造函數(shù)的4種方式

​ 1,Test t2(t1);//調(diào)用拷貝構(gòu)造函數(shù)

​ 2,聲明的同時(shí)就賦值Test t3 = t2會(huì)調(diào)用拷貝構(gòu)造函數(shù);但是注意下面這種不會(huì)調(diào)用拷貝構(gòu)造函數(shù)。

​ Test t3;

​ t3 = t2;//會(huì)調(diào)用=的重載方法

​ 3,方法的參數(shù)是對(duì)象類(lèi)型test(t2);

​ 4,方法的返回值是對(duì)象類(lèi)型。原因:對(duì)象tmp在方法結(jié)束后就被釋放掉了,要返回到函數(shù)外,必須要復(fù)制tmp.

但是用gdb看了一下在return處并沒(méi)有調(diào)用拷貝構(gòu)造函數(shù),所以test方法結(jié)束后,tmp也沒(méi)有被釋放,調(diào)用test方法的t5的內(nèi)存地址和tmp是一樣的。個(gè)人猜測(cè):老版本的gcc編譯器可能會(huì)在return處調(diào)用拷貝構(gòu)造函數(shù),但是新的編譯器(gcc 4.8.5-20)為了提高效率,避免了一次多余的拷貝。

void test(Test x){//進(jìn)入函數(shù)的時(shí)點(diǎn)會(huì)調(diào)用拷貝構(gòu)造函數(shù)
 int value;
 value = x.getData();
 Test tmp(value);
 return tmp;//return的時(shí)點(diǎn)會(huì)調(diào)用拷貝構(gòu)造函數(shù)
}
Test t5 = test(t1);

網(wǎng)頁(yè)題目:c/c++拷貝構(gòu)造函數(shù)和關(guān)鍵字explicit詳解
標(biāo)題路徑:http://www.rwnh.cn/article24/gdihje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)、電子商務(wù)、定制開(kāi)發(fā)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
舒兰市| 左云县| 莎车县| 花莲市| 清丰县| 阜新市| 凤阳县| 闽侯县| 常德市| 道孚县| 淮北市| 临城县| 临汾市| 贵德县| 当涂县| 饶阳县| 万年县| 资中县| 贡嘎县| 盐津县| 潍坊市| 苗栗市| 瓮安县| 璧山县| 临朐县| 兴隆县| 商丘市| 徐州市| 柳林县| 高碑店市| 工布江达县| 昌平区| 连城县| 雷州市| 托里县| 方山县| 新丰县| 邛崃市| 乐至县| 河池市| 义马市|