C++构造函数成员初始值问题

来源:互联网 发布:vb.net 获取网页内容 编辑:程序博客网 时间:2024/06/05 05:51

在C++日常编码过程中,我们经常是定义一个类如果类的成员存在基本类型与已经类类型的指针。我们都会在构造函数中对成员变量进行赋值。

事后在程序出错调试之后发现是因为类实例化时,该成员没有进行赋值引起,我们经常会说是因为没有初始化引起。(这里有一个基本概念的错误)

执行构造函数时,利用初始化列表给成员赋值与函数体中给成员赋值大多数情况得到的结果是一致的。所以很多时候我们本身就没有关注这两种方式的区别

在事实上这两种方式实际上是两个不同的概念

在构造函数初始化列表实际上才是对成员进行初始化

在构造函数函数体中对成员进行赋值实际上已经不是参数的初始化了,是对成员对象的改变。

构造函数的初始化列表有时必不可少,例如:

class A

{

private:

         const int    m_iValue;

}

类A如果在构造函数中没有对其初始化列表,而在函数体中对其赋值将引发错误

如果成员是Const 或者引用或者是某种没有提供默认构造函数的类类型,我们必须通过初始化列表对成员进行初始化