默认初始化

 虽然保险的做法是对每个变量都显示初始化,但是了解一下默认初始化的规则也是很有必要的。

1.定义于任何函数体之外的变量被初始化为0。

2.定义在函数体内部的局部变量不会被默认初始化。所以,它的值是未定义的(这里的“未定义”我的理解:变量所分配内存中的二进制数据,分配时是什么就是什么,机器会按照变量的类型来解读这串二进制数据)。

3.对于局部静态对象(在函数体内加了前缀static)如果没有显示的初始值,它将进行“值初始化”,内置类型的局部静态对象将被初始化为0.

值初始化

c++primer里是这么介绍的,书里采用的是vector的例子

如果定义了一个vector对象,但是没有给初始值。则值初始化就开始了——如果vector对象元素是内置类型,比如int,则元素初始值自动设为0.如果元素是某种类类型,比如string,则元素由类默认初始化。

例如:vector<int> ivec(10);//vector中有10个元素,默认初始化为0.


中文版一些定义看着就蛋疼,英文版看着费力。哎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值