构造函数初始化列表

问题描述:

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

问题解决:

    构造函数分两阶段执行:

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

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

需要注意的是:

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

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

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

    考虑如下代码:

clipboard

clipboard[1]

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

clipboard[2]

注:

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

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

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

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

posted @ 2014-02-18 19:31  罗松超  阅读(1125)  评论(0编辑  收藏  举报