为什么我可以使用初始化列表来构造对象?

时间:2014-03-29 01:42:36

标签: c++

我的课程有三个字段,如

classA
{
  classA(float x, float y, float z) { _x = x; _y = y; _z = z;}
  float _x, 
  float _y,
  float _z
}

我曾经使用ClassA a(1.0,2.0,3.0)构建对象,现在我发现我可以使用

Class A = {1.0, 20.0, 3.0};

这是C ++ 11中的新功能吗?

2 个答案:

答案 0 :(得分:1)

是的,它被称为Uniform Initialization,它建立在初始化列表上,并尝试缓解最棘手的解析错误。基本上它是一种可以在任何对象上使用的初始化语法。

您可以在Wikipedia上了解更多相关信息。

答案 1 :(得分:1)

是的,C ++ 11在初始化时扩展了“{}”的使用,并且也可以省略“=”。 以下是一些例子:

int x={5};

double y {2.75};

short quar[3] {4,3,2};

int *p= new int [3] {2,3,5};   //c++ 11


ClassName a(3,15,6);//old style

ClassName a{3,15,6};//C++ 11

ClassName a={3,15,6};//C++ 11


vector<int> a3{4,6,1};