2013-06-19 64 views
0

我在C++兩個構造,以及一個構造函數調用,以便不重複初始化邏輯的另一個。有趣的是A()調用A(int),但是這個指針指向不同的地址。有趣的是A()調用A(int),但是這個指針指向不同的地址。爲什麼是這樣?還是這個g ++的bug?不同存儲器地址

int main(int argc, char *argv[]) { 
    A* a = new A(); 
} 

0x7fa8dbc009d0 <-- from A() 
0x7fff67d660d0 <-- from A(int) 

回答

1

A(20);是它構建的新實例聲明A,不A的上this構造函數的調用。

不能調用C++ 03的給定構造內的另一個構造函數重載。但是,您可以使用展示位置新功能來獲得相同的效果。替換:

A(20); 

在你的代碼:

new (this) A(20);