C++ 对象初始化

本文详细探讨了C++中对象初始化的过程,强调初始化与赋值的区别,并分别介绍了内置类型、类的数据成员、复合类型、const限定符、类类型数据成员以及容器的初始化规则。同时,讨论了派生类数据成员初始化以及对象声明与定义的区别,提醒程序员注意初始化的重要性,避免使用默认初始化导致未定义的值。
摘要由CSDN通过智能技术生成

初始化是在创建对象时赋予其一个初始值(对象是指一块能存储数据并具有某种类型的内存空间)。

注意初始化与赋值不同,赋值是把对象的当前值擦除,并以新值代替。

注意:并不是靠“=”判断是否为赋值(“=”出现也可能是拷贝初始化);判断是赋值还是初始化要看其本质的区别:若对象尚无初值且正在赋予其初始值则为初始化);若对象已有的当前值被擦除,并且被新值的代替,则为赋值。

一、内置类型初始化

int test{5}; //列表初始化
int test = 5; //拷贝初始化 (调用了拷贝构造函数)
int test={5}; //拷贝初始化
int test(5);  //直接初始化; 注意:如果内置类型作为类的数据成员则不能使用()的方式初始化。
int test;    //执行默认初始化;注意:若定义在函数体外部则被初始化为0,若定义在函数体内部则它的值是未定义的,试图拷贝或以其他形式访问此类值将引发错误。

 注意:定义在块中的内置类型或复合类型(如数组和指针)的对象如果执行默认初始化,则他们的值是未被定义的。未定义的变量含有一个不确定的值,会带来无法预计的后果,包括程序崩溃、或者程序可以执行但结果时对时错无法把握。因此,内置类型和复合类型执行默认初始化并不安全,建议初始化每一个内置类型和复合类型的变量(无论是单独出现的内置类型,还是在类内作为数据成员)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuyuelongfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值