码迷,mamicode.com
首页 > 编程语言 > 详细

深入探索C++对象模型->2.4成员们的初始化队伍

时间:2016-08-23 16:47:26      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

一、在下列情况下,必须使用member initialization list

  1、当初始化一个reference时;

  2、当初始化一个const member时;

  3、当调用一个base class的constructor,而它拥有一组参数时;

  4、当调用一个member class 的constructor,而它拥有一组参数时。

  在这四种情况下,初始化应该位于初始化列表,否则效率不高。

二、另一个常见问题是:能否调用一个member function以设定一个member的初值?

  答案是yes,下面是一段代码转换:

X::X(int val)
    : i(xfoo(val)), j(val)
{}
//实际上被转换如下
X::X(/*this pointer, */ int val)
{
    i = this->xfoo(val);
    j = val;
}

在此转换中,this指针已经被建构妥当。但是最好将function放于constructor体内,因为它所用到的members可能会还没初始化。

深入探索C++对象模型->2.4成员们的初始化队伍

标签:

原文地址:http://www.cnblogs.com/linux-hp/p/5799408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!