1 int var = 0; 2 int var = {0}; 3 int var {0}; 4 int var(0);
无论是初始化对象还是某些时候为对象赋新值,都可以用这样一组右花括号括起来的初始值.
当用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错,也就是说安全性比那些作转换的更高:
1 long double ld = 3.14 2 int a{ld},b={ld};// 错误:没发生转换,因为存在丢失信息的风险 3 int c(ld),d=ld;// 正确:发生转换,精度有丢失