4
比方說,我有一個類A和一個類B. B用作A中的成員。B沒有默認的構造函數,而是一個需要參數的構造函數。C++調用非默認構造函數作爲成員
class B {
B(int i) {}
};
class A {
B m_B;
A()
{
m_B(17); //this gives an error
}
};
我該如何使用B作爲A中的成員?
比方說,我有一個類A和一個類B. B用作A中的成員。B沒有默認的構造函數,而是一個需要參數的構造函數。C++調用非默認構造函數作爲成員
class B {
B(int i) {}
};
class A {
B m_B;
A()
{
m_B(17); //this gives an error
}
};
我該如何使用B作爲A中的成員?
使用初始化列表。
class B {
public:
B(int i) {}
};
class A {
B m_B;
public:
A() : m_B(17) {}
};
順便說一句,給構造的外部某處復位m_B
,正確的語法是:
m_B = B(17);
在這個例子中,如果最後一行'M_B = B(17)'從稱爲' A()構造函數,B的默認構造函數仍然被調用?如果是這樣,有沒有辦法來防止這種情況? – 2011-03-22 05:43:38
@Steven:(1)是的。 (2)使用初始化列表初始化'm_B'。 – kennytm 2011-03-22 05:46:25