下面的代碼從不打印出計數器,假設編譯器做了一些智能的初始化int數據成員類型爲零的東西?GCC默認int數據成員初始化
include <iostream>
using namespace std;
class A {
public:
int a;
int b;
A(): b(a), a(b) { }
};
int main()
{
A* p = new A;
int counter = 0;
while (!(p->a)) {
p = new A;
counter++;
}
cout << counter << endl;
}
這是未定義的行爲。您正在使用未初始化的變量來初始化其他變量。我只是說你很幸運,把它們歸爲零。 –