类构造函数初始化列表的使用

类构造函数(Constructor)的初始化列表的使用

构造函数是与类同名的函数,它与普通函数的区别在于,它没有返回类型。
在构造函数后面紧跟着冒号加初始化列表,各初始化变量之间以逗号","隔开。下面举个例子。

class myClass
{
public :
myClass();// 构造函数,无返回类型,可以有参数列表,这里省去
~myClass();// 析构函数
int m_a;//声明变量
const int m_b;//声明一个常量
}
myClass::myClass():m_a(1),m_b(1)// 初始化列表
{
}

上面的例子是利用冒号对构造函数初始化列表的使用,如下是在使用时几个需要注意的点:
(1)初始化列表的作用相当于在构造函数内进行相应成员变量的赋值,但二者其实有差别的。在初始化列表中是对变量进行初始化,而在构造函数内是进行赋值操作。const类型的变量必须在定义时进行初始化,而不能对const型的变量进行赋值,因此const类型的成员变量只能(而且必须)在初始化列表中进行初始化,即下面的代码将会出错:

myClass::myClass()
{
m_a = 1;// 正确赋值操作
m_b = 1;// 错误,const变量不能进行赋值操作; 
}

(2)初始化的顺序与成员变量声名的顺序相同。
先看一下下面的程序:

myClass::myClass():m_b(1),m_a(m_b)
{
}

执行结果:m_b=1,m_a为一个随机数
正确做法如下:

myClass::myClass():m_a(1),m_b(m_a)
{
}

(3)对于继承的类来说,在初始化列表中也可以进行基类的初始化。初始化的顺序是:先基类初始化,再根据该类自己的变量的声明顺序进行初始化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值