簡體   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