为什么C++不允许在类内使用圆括号初始化

有人说说是为了避免歧义。
比如:

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

这样变成了函数声明。
但是,在类外同样可以写

typedef int x;int z(x);

我觉得避免歧义并不是它的原因。之后看有人说是类内不允许直接初始化,那么列表初始化不属于直接初始化吗?
请问类内不允许圆括号初始化是什么原因?C++ primer第五版65页只说了“记住”,没说原因啊


一只斗牛犬
浏览 870回答 1
1回答

慕斯王

你为什么 duang 一下就觉得“避免歧义并不是它的原因”?Most Vexing Parse 了解一下?想用小括号初始化必然会面对失败。引入列表初始化还不是为了克服这些问题。
打开App,查看更多内容
随时随地看视频慕课网APP