/*下面的程序似乎神祕地進入遞歸,即使沒有在視線內。 編譯器:克++(Ubuntu的4.4.3-4ubuntu5.1)4.4.3 機:86 OS: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;
}
這是爲什麼?
如果我把x改成一些硬編碼值,比如說任何Int,它的工作正常,否則再次調用默認的構造函數n, – PeerPandit
爲什麼你在默認構造函數中調用參數化構造函數? x已經在那裏使用成員初始化程序初始化了。順便說一句,你也可以定義'Test(int a = 9)'並且完全省略默認的構造函數。 –
聽起來像一個編譯器錯誤。 –