地点:软件大楼211
这是C++11的新特性。在新标准下C++11允许使用{......}语法来初始化类型,包括内置内型,struct类型,class类型,比如:
int a={5};
在这里甚至等号都可以不要,比如:
int a{5}
也是合法的。
另外,使用统一初始化还可以阻止窄化。一般情况下C++是隐式执行窄化,即所谓隐式转化,统一初始化可有效防止这种情况的出现,在编译时给出错误信息提示,从而保证代码安全性。比如:
int x={3.14}; //编译错误
又比如:
void func(int i)
{
/*......*/
}
int main()
{
func({3.14}); //编译错误
return 0;
}
统一初始化用于初始化STL容器,比如:
vector<string> myVec={"string1","string2","string3"};
统一初始化用于用于初始化动态数组,比如:
int*pArray=new int[4]{0,1,2,3};
统一初始化用于构造函数初始化器中初始化类成员数组,
比如
class MyClass
{
public:
MyClass():mArray{0,1,2,3} {}
private:
int mArray[4];
}