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

来源:互联网 发布:网络作家名字是字母的 编辑:程序博客网 时间:2024/05/16 02:28

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

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

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

0 0
原创粉丝点击