3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
盡管MyClass myObj();
可以使用空的初始化程序或函數(shù)聲明將其解析為對(duì)象定義,但語(yǔ)言標(biāo)準(zhǔn)指定始終解決歧義,而傾向于函數(shù)聲明。在其他上下文中(例如,在new
表達(dá)式中或構(gòu)造值初始化的臨時(shí)值時(shí)),可以使用空括號(hào)初始化程序。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
這被稱為最令人煩惱的解析問題。當(dāng)解析器看到
MyClass myObj();
它認(rèn)為您正在聲明一個(gè)myObj沒有參數(shù)的函數(shù),并返回MyClass。
要解決此問題,請(qǐng)使用:
MyClass myObj;

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
我在C ++標(biāo)準(zhǔn)(第8.5.8節(jié))中發(fā)現(xiàn)了這一點(diǎn):
一個(gè)其初始化程序是一組空括號(hào)(即())的對(duì)象,應(yīng)進(jìn)行值初始化。
[注意:由于初始化程序的語(yǔ)法不允許使用(),
X a ();
不是X類對(duì)象的聲明,而是不帶參數(shù)并返回X的函數(shù)的聲明。在某些其他初始化上下文(5.3.4、5.2.3、12.6.2)中允許使用()形式?!沧
- 3 回答
- 0 關(guān)注
- 473 瀏覽
添加回答
舉報(bào)