亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我對值初始化的嘗試被解釋為函數聲明,為什么不是A a(()); 解決這個問題?

我對值初始化的嘗試被解釋為函數聲明,為什么不是A a(()); 解決這個問題?

C++
猛跑小豬 2019-05-23 10:52:43
我對值初始化的嘗試被解釋為函數聲明,為什么不是A a(()); 解決這個問題?經典地用一條線來證明A a(B()); //declares a function雖然這對于大多數人而言,直觀地看起來是a類型對象的聲明A,將臨時B對象作為構造函數參數,它實際上是一個函數a返回的聲明A,將一個指針指向一個返回的函數,它B本身不帶參數。同樣的線A a(); //declares a function也屬于同一類別,因為它代替一個對象,它聲明了一個函數?,F在,在第一種情況下,這個問題的通常解決方法是在其周圍添加一組額外的括號/括號B(),因為編譯器會將其解釋為對象的聲明A a((B())); //declares an object但是,在第二種情況下,執行相同操作會導致編譯錯誤A a(()); //compile error我的問題是,為什么?是的我非常清楚正確的“解決方法”是將其更改為A a;,但我很想知道()第一個示例中的額外功能是什么,然后在重新應用它時不起作用第二個例子。A a((B()));變通辦法是否是寫入標準的特定異常?
查看完整描述

4 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

你可以改為

A a(());

使用

A a=A();


查看完整回答
反對 回復 2019-05-23
  • 4 回答
  • 0 關注
  • 774 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號