繁体   English   中英

在C ++中使用参数初始化成员变量

[英]Initializing a member variable with parameters in c++

我只有一个构造函数Foo(int length)有一个Foo类。 我还有一个成员为Foo myFoo = myFoo(100)Foo myFoo = myFoo(100)类,该如何初始化呢? 如果它在Foo构造函数中没有length参数,则只能对其进行初始化。

提前致谢

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

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

    Foo myFoo;
};

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

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

// constructor code

}

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

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

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

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

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

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

但是,您的编译器可能尚不支持该编译器,或者仅支持特殊标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM