0
class foo
{
public:
foo();
foo(int param){foo::foo();}
};
將foo::foo(int)
調用foo::foo()
作爲方法並初始化對象的成員或創建無名對象?一個構造函數可以從另一個構造函數/成員函數中調用嗎?構造對象兩次
class foo
{
public:
foo();
foo(int param){foo::foo();}
};
將foo::foo(int)
調用foo::foo()
作爲方法並初始化對象的成員或創建無名對象?一個構造函數可以從另一個構造函數/成員函數中調用嗎?構造對象兩次
在這種情況下,您的構造函數將創建foo
類的無名對象,然後它將被銷燬。
如果你想從另一個構造函數中調用構造函數,你可以用做到這一點(只在C++ 11)委託構造
例子:
class foo
{
public:
foo();
foo(int param) : foo() {}
};
呼籲從一個構造函數另一種方式可能在C++ 0x? – Ivars
@ user2543574,是的,答案顯示了方式。 – chris
@ user2543574沒有C++ 0x這樣的東西。 xorguy的答案適用於C++ 11。檢查編譯器的手冊以找出它支持的C++ 11功能。 GCC自4.7開始支持委託構造函數。 – Oswald