我對值初始化的嘗試被解釋為函數聲明,為什么不是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()));變通辦法是否是寫入標準的特定異常?
添加回答
舉報
0/150
提交
取消
