2.2.1 c++变量初始化

初始值

  • 当对象在创建时获得了一个特定的值,就说这个对象被初始化了。
  • 在c++语言中,初始化和赋值是两个完全不同的操作。
    • 初始化的含义是创建变量时赋予其一个初始值。
    • 赋值的含义是把对象的当前值擦除,而以一个新的值来代替。

列表初始化

  • 当用于内置类型的变量时,这种初始化有一个特点:如果使用列表初始化且初始值存在丢失信息的风险,则编译器将报错
long double ld = 3.1415926536;
int a{ld}, b = {ld};//错误:转换未执行,因为存在丢失信息的危险
int c(ld), d = ld;//转换执行,且确实丢失了部分值
  • 使用long double的值初始化int变量时可能丢失数据,所以编译器拒绝了a和b的初始化请求。其中至少ld的小数部分会丢失掉,且int也可能存不下ld的整数部分。

默认初始化

  • 如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予"默认值"。默认值到第是什么由变量的类型决定,同时定义变量的位置也会对此有影响。
  • 如果是内置类型的变量未被显示初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0.
  • 定义在函数体内部的内置类型变量如果没有初始化,则其值是未定义的,如果试图拷贝或以其它形式访问此类值将引发错误。
  • 每个类各自决定其初始化对象的方法。是否允许不经初始化就定义对象也由类自己决定,如果类允许,它将决定对象的初始值到底是什么。

防止使用未初始化的变量导致程序出错,建议初始化每一个内置类型的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值