为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
一只斗牛犬 2018-09-24 20:27:28
有人说说是为了避免歧义。比如:class Widget  {private:    typedef int x;  int z(x); };这样变成了函数声明。但是,在类外同样可以写typedef int x;int z(x);我觉得避免歧义并不是它的原因。之后看有人说是类内不允许直接初始化,那么列表初始化不属于直接初始化吗?请问类内不允许圆括号初始化是什么原因?C++ primer第五版65页只说了“记住”,没说原因啊
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

你为什么 duang 一下就觉得“避免歧义并不是它的原因”?

Most Vexing Parse 了解一下?想用小括号初始化必然会面对失败。引入列表初始化还不是为了克服这些问题。


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 869 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信