c++中赋值与初始赋值的区别

本文探讨了C++中构造函数内的赋值操作限制及其原因,并解释了如何通过成员初始化列表来解决编译时成员变量初始化的问题。

赋值是在执行阶段由程序向固定存储单元的变量写入数值的操作,此后仍允许用其他赋值赋值函数修改其内容。

初始赋值则是对const类的常数仅在编译时完成予留内存单元并同时填入初值,此后不允许再改动。所以不能在构造函数内使用赋值语句(即等号)在运行阶段对常数或引用类型数据进行赋值。在C++语言中只有const和引用类型是要在编译时就要指明其初值。由于定义在类中的成员都是抽象的数据结构描述,不分配内存单元,因此在对构造函数进行编译的阶段也就不可能完成赋初值的操作。为了解决这一矛盾,C++语言只有借助于类对象“成员初始化列表”的描述区将要赋初值的的成员名及初值预先声明,待执行时产生了对象(即分配了内存单元)后再补做做上述的赋初值操作。从某种意义上讲,成员初始化表示特意为这两种数据成员准备的也不为过。由此,成员初始化表不可写在声明语句上。

至于引用类型,因为编译器不知道在使用时将与哪个对象成员相对应,所以不允许在类中定义联系。然而联系又必须确定,否则在运行阶段可能出现“int& i=3”的错误,所以只好将引用类型与const类型同等对待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值