这2个语法可以工作。他们有什么区别?这三种初始化静态变量的方式有什么区别?
class MyClass
{
const static int myInt1_ {20};
const static int myInt2_ = 20;
}
此外,为什么不可能做const static int myInt3_ (20)
?
这2个语法可以工作。他们有什么区别?这三种初始化静态变量的方式有什么区别?
class MyClass
{
const static int myInt1_ {20};
const static int myInt2_ = 20;
}
此外,为什么不可能做const static int myInt3_ (20)
?
const static int myInt1_ {20};
这是在C++ 11修订版中引入的新的统一初始化语法。仅在C++ 11之前
const static int myInt1_ = 20;
将是有效的。引入了统一的初始化语法来解决更复杂的初始化结构中的一些解析歧义。在你的情况下,通过简单的静态类成员初始化,两种初始化语法都是有效的,并产生相同的结果。
'量静态INT myInt3_(20)'都是你的人了,哈哈。 – 0xDEFACED
不要使用大括号来防止缩小转换次数吗? –
不同类之间的括号和等号初始化之间的区别可能会涉及到,所以我将限制为回答整数。对于整数,基本上有一个区别:缩小转换。本编译:
const static int x = 3.0;
这不。
const static int x{3.0};
语言设计者决定他们不想允许'量静态INT myInt3_(20);'在这种情况下 –