使用c ++中的参数初始化成员变量

时间:2011-11-07 21:49:18

标签: c++ class initialization

我的课程Foo只有一个构造函数Foo(int length)。我还有一个班级'Bar'和成员Foo myFoo = myFoo(100)我将如何初始化它?如果Foo constructer中没有长度参数,我只能初始化它。

提前致谢

3 个答案:

答案 0 :(得分:4)

这个问题已经出现过很多次了。您使用构造函数初始化列表来执行此操作:

class Bar
{
    Bar() : myFoo( 100 ) {}

    Foo myFoo;
};

这些初始化列表允许您为基类和成员调用构造函数,并且是初始化它们的预期方法。

答案 1 :(得分:3)

Bar::Bar()
: myFoo(100) {

// constructor code

}

答案 2 :(得分:0)

我不确定我是否理解正确,但通常会在构造函数初始化列表中初始化成员:

class Bar
{
public:
  Bar(); 
private:
  Foo myFoo;
};

Bar::Bar()
// The following initializes Foo
  : Foo(100)
// constructor body
{
}

请注意,如果Bar有多个构造函数,则必须在每个构造函数中初始化myFoo

C ++ 11直接在成员声明中添加了初始化,如下所示:

class Bar
{
  Foo myFoo = Foo(100);
};

但是你的编译器可能还不支持它,或者只支持特殊标志。