初始化变量

另外,指针和引用类型的变量是不会自动初始化的,因为它没有一个默认值!当定义一个指针对象时,如int *pi; 此时它并未初始化,使用它很危险。应该在定义时直接初始化为它指向的对象。如果必须分开定义该指针和对象,要将指针初始化为0(NULL)。

如果是类类型的,只要定义了默认构造函数,在没有显式初始化时就会进行自动初始化。但是,对于内置和枚举类型的变量,并不是总会自动初始化。他们在什么时候不进行自动初始化从而造成悲剧呢?

函数体内定义时、动态数组创建时。

当对象是一个类类型或结构体时,它数据成员的初始化与任何变量初始化规则相同。所以如果类里面有内置类型或者复合类型的数据成员,则一定要在构造函数里对其进行显式的初始化

归根结底,内置类型和复合类型的变量自动初始化的情况并不经常出现,所以最好的方法还是按照C++ Primer的建议:每个内置类型的对象都要初始化!由于复合类型和内置类型自动初始化规则是一样的,所以我再加一句,每个复合类型的对象也都要初始化!而类类型的只要有默认构造函数就行了。所以说还是对象好啊


变量(对象)类型

默认值

布尔和所有整型

0

所有小数

0.0

char

‘’

string

“”

枚举类型

第一个枚举成员

其他类类型或结构体

默认构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值