解决方法
我对此不是100%肯定,但这可能是为了防止语法模糊.例如,考虑以下类:
class BadTimes { struct Overloaded; int Overloaded; // Legal,but a very strange idea. int confusing(Overloaded); // <-- This line };
指示线是什么意思?如所写的,这是一个名为confused的成员函数的声明,它接受类型为Overloaded的对象(其名称在函数声明中未指定)作为参数,并返回一个int.如果C 11允许初始化器使用括号,这将是不明确的,因为它也可以是int类型的成员的定义,名为confused,它被初始化为数据成员Overloaded的值. (这与Most Vexing Parse的当前问题有关)
通过要求花括号,这种歧义被删除:
class BadTimes { struct Overloaded; int Overloaded; // Legal,but a very strange idea. int confusing{Overloaded}; // <-- This line };
现在,很明显,混乱实际上是一个int初始化为Overloaded的值,因为没有办法把它看作一个函数声明.
希望这可以帮助!
原文地址:https://www.jb51.cc/c/114986.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。