首页 > 其他 > 详细

构造函数初始化列表

时间:2014-02-19 15:06:19      阅读:305      评论:0      收藏:0      [点我收藏+]

问题描述:

        何时,必须使用c++构造函数初始化列表?

问题解决:

    构造函数分两阶段执行:

    (1)初始化阶段  ——可以分为显式初始化和隐式初始化,类类型的数据成员总是在初始化阶段初始化,初始化发生在计算阶段开始之前。     

    (2)普通计算阶段——由构造函数的函数体中的所有语句组成。

需要注意的是:

    1、构造函数除了有函数名、形参列表、函数体、无返回值之外,还可以包含一个构造函数的初始化列表

    2、没有默认构造函数的类类型的成员,const或者引用类型的成员,都必须在构造函数的初始化列表中进行初始化。

    3、内置类型的成员不进行隐式初始化,此这些成员进行初始化或者赋值都无关紧要。

    考虑如下代码:

bubuko.com,布布扣

bubuko.com,布布扣

编译时,会出现如下的错误提示信息:

bubuko.com,布布扣

注:

    如上类,构造函数体中初始化int& 、const、类对象都会出现错误。

     1、关于类对象class_data ,需要在构造函数初始化时初始化该对象,此时会调用class_data类 integer的默认构造函数,但是integer类不包含默认构造函数,仅包含一个含参数的构造函数,因此初始化该对象class_data会出现错误。

    2、const数据必须在构造函数的初始化列表中显示初始化,如果在构造函数体中初始化,因为const_data是const数据类型,因此不能进行赋值,错误。

    3、引用,由于构造函数初始化时没有为ref_data绑定引用对象,并为进行初始化,因此在函数体赋值时会出现错误。

构造函数初始化列表

原文:http://www.cnblogs.com/luosongchao/p/3554795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!