0
我會盡量總結我需要的兩個詞和代碼片段。在課堂/構造函數成員初始化
我有一個類,Foo
,其中包含的類型Bar
的數據成員:
class Foo {
public:
Bar instance_of_Bar;
Foo (int some_data)
{
// I need to initialize instance_of_Bar using one of its
// constructors here, but I need to do some processing first
// This is highly discouraged (and I prefer not to use smart pointers here)
instance_of_bar = Bar(..);
// As an unrelated question: will instance_of_Bar be default-initialized
// inside the constructor before the above assignment?
}
}
顯然,「正確」的方式做到這一點是使用一個初始化列表如下:
Foo (int some_data) : instance_of_Bar(some_data) {}
但是這不是一個選項,因爲在將它傳遞給Bar
構造函數之前,我需要在some_data
上做一些工作。
希望我自己清楚。 RAII的方式是以最少的開銷和複製來實現它(Bar
類是一個很重要的類)。
謝謝你一堆。
'新的酒吧(..);'是錯誤的BTW。 –
當然,我的意思是一般的動態分配。我修復了代碼片段(我知道這是一個糟糕的做法,只是試圖指出一個明顯的選擇)。 – Mark
我沒有必要,你可以使用一個臨時實例來複制:'instance_of_bar = Bar(...);'。 –