鍍金池/ 問(wèn)答/C++/ 為什么C++不允許在類內(nèi)使用圓括號(hào)初始化

為什么C++不允許在類內(nèi)使用圓括號(hào)初始化

有人說(shuō)說(shuō)是為了避免歧義。
比如:

class Widget 
{
private: 
  typedef int x;
  int z(x);
};

這樣變成了函數(shù)聲明。
但是,在類外同樣可以寫

typedef int x;
int z(x);

我覺(jué)得避免歧義并不是它的原因。之后看有人說(shuō)是類內(nèi)不允許直接初始化,那么列表初始化不屬于直接初始化嗎?
請(qǐng)問(wèn)類內(nèi)不允許圓括號(hào)初始化是什么原因?C++ primer第五版65頁(yè)只說(shuō)了“記住”,沒(méi)說(shuō)原因啊

回答
編輯回答
舊酒館

你為什么 duang 一下就覺(jué)得“避免歧義并不是它的原因”?

Most Vexing Parse 了解一下?想用小括號(hào)初始化必然會(huì)面對(duì)失敗。引入列表初始化還不是為了克服這些問(wèn)題。

2017年6月24日 14:11