在构造函数中初始化成员

时间:2013-01-19 01:06:39

标签: c++

  

可能重复:
  C++ initialization lists

class Base
{
public:
int m_nValue;

Base(int nValue=0)
    : m_nValue(nValue)
{
}
};

在这段代码中,是构造函数初始化m_nvalue成员变量吗? 我不确定这种语法:

Base(int nValue=0) : m_nValue(nValue) {}

我们通常把它写成:

Base(int nValue) { m_nValue = nValue;}

有人可以解释上面的C ++语法吗?

3 个答案:

答案 0 :(得分:3)

此语法:

Base(int nValue=0)
: m_nValue(nValue)

称为成员初始化程序。它将使用给定的nValue初始化m_nValue。这种语法在C ++中通常是首选,因为它在构造函数体之前执行。

答案 1 :(得分:1)

它被称为成员初始化列表。

成员初始化列表由逗号分隔的初始化列表组成,前面有冒号。它是在收盘后放置的 参数列表的括号和函数体的左括号

之前

从概念上讲,这些初始化 在创建对象时以及在执行括号内的任何代码之前进行。

注意: 您不能将成员初始值设定项列表语法与构造函数以外的类方法一起使用。

答案 2 :(得分:0)

在代码中初始化变量的方式称为成员初始化列表。 通常我们使用这样的列表来初始化 const成员变量(正常 - 非常量)我们因为在构造时我们可以给const变量赋予一些值。

第二种初始化基本上是普通的参数化构造函数。当你有一个对象时,在你想要初始化成员变量的对象创建时使用它。