C++|列表初始化

列表初始化即使用{}初始化,可在编译时自动识别数据窄化转换(收缩转换)。

窄化转换(收缩转换):窄化(收缩)转换是指将一个较大范围的数据类型转换为较小范围的数据类型,而可能导致数据丢失或精度降低的转换。列表初始化在很多情况下可以防止这种窄化转换的发生,从而增强了程序的安全性。

例如:

int num1 = 3.14; // 这里会将 double 类型的 3.14 窄化转换为 int 类型,结果 num1 的值为 3
int num2{3.14}; // 编译时报错,因为存在从 double 到 int 的窄化转换

通过这种方式,列表初始化可以在编译阶段就发现潜在的数据丢失问题,帮助开发者编写出更健壮的代码。

特别地,在使用auto关键字时使用=初始化更好。

例如,当使用auto推断一个内置类型时,使用{}初始化可能会被视为创建一个包含单个元素的初始化列表,而不是将该元素的值赋给变量。例如auto x = 5; 会正确地将x推断为int类型并赋值为 5。但如果写成auto x{5};,在一些编译器中可能会将x推断为std::initializer_list<int>类型

{}空初始化列表时使用默认值进行初始化,例如int型默认为0,double型默认为0.0,指针默认为nullptr(空指针)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值