[英]Default Constructor Recursion Crash
/ *以下程序似乎神秘地輸入遞歸,即使看不到任何東西。 編譯器:g ++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3機器:x86操作系統:Ubuntu 10.04 64位
* /
#include<iostream>
using namespace std;
class Test
{
public:
Test ():x(9)
{
cout << " Test::Test\n";
Test (x);
}
Test (int a)
{
cout << " Test::para\n";
}
private:
int x;
};
int main(void)
{
Test a;
return 0;
}
為什么是這樣?
Test (x);
被解析為
Test x;
......不是構造函數調用。 你也可以寫
Test (y);
並獲得相同的行為。
你不能在C ++中調用其他類似的構造函數。 但是從C ++ 11開始,您可以在初始化列表中轉發構造函數調用:
class Test {
public:
Test (): Test(9) {
cout << " Test::Test\n";
}
Test (int a) : x(a) {
cout << " Test::para\n";
}
private:
int x;
};
請參閱Wolfgang的答案 ,以解釋代碼崩潰的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.