[英]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.