Следующий код никогда не распечатывает счетчик, предполагая, что компилятор делает что-то интеллектуальное, чтобы инициализировать типы данных данных типа нулями?Инициализация члена данных инициализации по умолчанию GCC
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;
}
Это неопределенное поведение. Вы используете неинициализированные переменные для инициализации других переменных. Я бы сказал, что вам посчастливилось получить их как ноль. –