这三种初始化静态变量的方法有什么区别?

时间:2017-04-02 01:16:46

标签: c++ c++11

这两种语法有效。他们之间有什么区别?

class MyClass
{
  const static int myInt1_ {20};
  const static int myInt2_ = 20;
}

另外,为什么不能const static int myInt3_ (20)

2 个答案:

答案 0 :(得分:2)

const static int myInt1_ {20};

这是C ++ 11修订版中引入的较新的统一初始化语法。仅限C ++ 11之前

const static int myInt1_ = 20;

是有效的。引入了统一初始化语法来解决更复杂的初始化构造中的一些解析歧义。在您的情况下,使用简单的静态类成员初始化,两个初始化语法都是有效的并产生相同的结果。

答案 1 :(得分:2)

可能涉及各种类的大括号和等于初始化之间的差异,所以我将限制回答整数。对于整数,基本上有一个区别:缩小转换。这编译:

const static int x = 3.0;

这不是。

const static int x{3.0};