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

Why I can use initialtion list to construct object?

本文关键字:对象 列表 初始化 我可以 可以使 为什么      更新时间:2023-10-16

我有一个类,它有三个字段,如

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中的新特性吗?

是的,它被称为Uniform Initialization,它建立在初始化器列表上,并试图减轻大多数令人烦恼的解析错误。基本上,它是一种可用于任何对象的初始化语法。

您可以在维基百科上了解更多。

是的,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};