3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
A a = A(5)
a
使用初始化器表達(dá)式作為參數(shù)調(diào)用所選函數(shù);如果函數(shù)是構(gòu)造函數(shù),則調(diào)用初始化目標(biāo)類型的cv非限定版本的臨時(shí)函數(shù)。臨時(shí)值是一個(gè)prvalue。然后,根據(jù)上述規(guī)則,調(diào)用的結(jié)果(是構(gòu)造函數(shù)用例的臨時(shí)結(jié)果)被用于引導(dǎo)初始化副本初始化的目標(biāo)對(duì)象。 在某些情況下,允許實(shí)現(xiàn)通過將中間結(jié)果直接構(gòu)造到被初始化的對(duì)象來消除這種直接初始化過程中固有的復(fù)制;參見12.2,12.8。.
A(5)
a
當(dāng)滿足某些條件時(shí),即使對(duì)象的復(fù)制/移動(dòng)構(gòu)造函數(shù)和/或析構(gòu)函數(shù)有副作用,也允許實(shí)現(xiàn)省略類對(duì)象的復(fù)制/移動(dòng)構(gòu)造。
在這種情況下,實(shí)現(xiàn)將省略的復(fù)制/移動(dòng)操作的源和目標(biāo)視為引用同一對(duì)象的兩種不同方式,并且該對(duì)象的銷毀發(fā)生在如果不進(jìn)行優(yōu)化就會(huì)銷毀這兩個(gè)對(duì)象的晚些時(shí)候。復(fù)制/移動(dòng)操作的簡化,稱為 復(fù)制省略,允許在下列情況下(可合并以消除多份副本): [...]
當(dāng)沒有綁定到引用(12.2)的臨時(shí)類對(duì)象被復(fù)制/移動(dòng)到具有相同cv-非限定類型的類對(duì)象時(shí)
,可以通過將臨時(shí)對(duì)象直接構(gòu)造到省略的復(fù)制/移動(dòng)的目標(biāo)中來省略復(fù)制/移動(dòng)操作。
A a = A(5)
:
編譯器會(huì)看到帶有復(fù)制初始化的聲明。 這個(gè) A(int)
構(gòu)造函數(shù)以初始化臨時(shí)對(duì)象。 因?yàn)榕R時(shí)對(duì)象是 不
綁定到引用,并且它確實(shí)具有相同的類型。 A
作為復(fù)制初始化表達(dá)式中的目標(biāo)類型,編譯器可以直接將對(duì)象構(gòu)造為 a
,臨時(shí)的

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
A a = A(5);
A a(5);
a
函數(shù)符號(hào)類型轉(zhuǎn)換(5.2.3)可用于創(chuàng)建其類型的新對(duì)象。[注意:語法看起來像構(gòu)造函數(shù)的顯式調(diào)用。-尾注]
- 3 回答
- 0 關(guān)注
- 358 瀏覽
添加回答
舉報(bào)