C 11 引入了类内初始化器,它允许直接在类定义中初始化成员变量。但是,这些初始化器必须遵守特定的语法规则。
问题:
为什么强制类内初始化器使用等号 (=) 或大写字母大括号({})?
答案:
此要求旨在消除潜在的语法歧义。
考虑以下示例:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing(Overloaded); // <-- Ambiguous line };
有问题的行可以解释为两种方式:
这种歧义是由于使用括号而产生的,括号既可以表示方法声明,也可以表示对象初始化。
为了解决这种混乱,C 11 强制在类初始化器中使用花括号。这明确表明混淆是一个成员变量:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing{Overloaded}; // <-- Clear initialization };
因此,类内初始化程序必须使用等号或大括号来防止语法误解并确保代码可读性。
以上是为什么 C 类内初始化器必须使用 `=` 或 `{}`?的详细内容。更多信息请关注PHP中文网其他相关文章!