2014-01-19 48 views
0
class foo 
{ 
    public: 
    foo(); 
    foo(int param){foo::foo();} 
}; 

foo::foo(int)調用foo::foo()作爲方法並初始化對象的成員或創建無名對象?一個構造函數可以從另一個構造函數/成員函數中調用嗎?構造對象兩次

回答

2

在這種情況下,您的構造函數將創建foo類的無名對象,然後它將被銷燬。

如果你想從另一個構造函數中調用構造函數,你可以用做到這一點(只在C++ 11)委託構造

例子:

class foo 
{ 
    public: 
    foo(); 
    foo(int param) : foo() {} 
}; 
+0

呼籲從一個構造函數另一種方式可能在C++ 0x? – Ivars

+0

@ user2543574,是的,答案顯示了方式。 – chris

+1

@ user2543574沒有C++ 0x這樣的東西。 xorguy的答案適用於C++ 11。檢查編譯器的手冊以找出它支持的C++ 11功能。 GCC自4.7開始支持委託構造函數。 – Oswald