列表初始化
#include<iostream>
using namespace std;
struct A
{
int _x;
int _y;
};
int main()
{
// 三种方式等价,并且可以省略=
int x = 1;
int y = { 2 };
int z{ 3 };
return 0;
}
{}按声明顺序初始化类成员变量
A p{ 1,2 };
cout << p._x; //1
cout << p._y; //2
本质上是调用构造函数来初始化,而且在没写构造函数的情况下,还不能用A p(1,2)来初始化。
// 初始化对象
int* ptr = new int[3]{ 1,2,3 };
A* ptr1 = new A[2]{ {1,2},{2,3} };
本质上可以看成多参数隐式类型转换。
struct A
{
string _x;
string _y;
};
A p{ "hello","hi" };
C++的initializer_list
auto il = { 10,20,30 };
cout << typeid(il).name();
initalizer_list有两个变量_start指向开头的变量,_finish指向末尾变量
int a[] = { 1,2,3 };
//底层是调用initlize_list的构造函数
vector的C++11支持接收initializer_list列表
用initializer_list来初始化构造函数
vector<int> v1 = { 1,2,3,4,5 };