int i_arr[3]={1,2,3};//普通数组 initializer list
struct A
{
int x;
struct B
{
int i;
int j;
}b;
}a={1,{2,3}};//POD类型
//拷贝初始化(copy-initialization)
int i=0;
class Foo
{
public:
Foo(int){}
}foo=123; //需要拷贝构造函数
//直接初始化(direct-initialization)
int j(10);
Foo bar(123);
int a5 = {3}; int a6 {3};
//C++98/03不具备,C++11可以直接在变量名后面跟上初始化列表Foo a3 = {123};
//虽然用了=,但仍然是列表初始化{}
前面的等于号是否书写对初始化行为没有影响。struct Foo
{
int x;
double y;
int z;
Foo(int,int){}
};
Foo foo {1,2.5,1};//error 【无法将Foo看做一个聚合类型】
struct Foo
{
Foo(int i) {std::cout<<i<<std::endl;}
};
Foo foo(1.2); //能正常编译,但i却不能完整地保存一个浮点型的数据
原文:https://www.cnblogs.com/fewolflion/p/12770686.html