初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而已一个新值来替代. ——《C++ Primer 5th》
在 C++11 新标准中,用花括号来初始化变量得到了全面应用.无论是初始化对象还是某些时候为对象赋新值,都可以使用一组由花括号括起来的初始值了.当用于内置类型的的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错.如:
long double ld = 3.1415926536;
int a{ld},b = {ld}; //**报错**
int c(ld), d = ld; //**不报错 但是精度丢失**
列表初始化还可为 vector 对象的元素赋值.如:
vector<string> art - {"a", "an", "the"};
C++初始化方式
- 使用拷贝初始化时,只能提供一个初始值.
- 如果提供的是一个类内初始值,只能使用拷贝初始化或者花括号的形式初始化.
- 如果提供的是初始元素值的列表,只能把初始值放入花括号里进行列表初始化.