C++11为变量和对象支持了更为丰富的通过花括号列表进行初始化:
#include <vector>
using namespace std;
int main(){
int i1 = 1; //等号赋值表达式初始化
int i2(2); //类似构造的圆括号表达式
int i3 = (3); //等号赋值表达式初始化
int i4{4}; //列表初始化
int i5 = {5}; //列表初始化
int a[]{1, 2, 3}; //列表初始化
int b[] = {4, 5, 6}; //列表初始化
vector<int> d{7, 8, 9}; //列表初始化
vector<int> e = {10, 11, 12}; //列表初始化
return 0;
}
这种使用了花括号列表进行初始化的方式,对于自定义的类也可以实现:
#include <vector>
#include <iostream>
#include <initializer_list>
using namespace std;
class Data{
public:
Data(initializer_list<int> l) //自定义类的列表初始化构造函数
{
for(initializer_list<int>::iterator it = l.begin(); it < l.end(); ++it)
{
m_array.push_back(*it); //通过迭代列表