Могут быть и другие примеры, но это тот, с которым я только что столкнулся.
#include <iostream>
using namespace std;
class Student
{
public:
int x;
};
int main()
{
Student rts;
Student* heap = new Student;
cout << rts.x << endl; // prints out random integer
cout << heap->x << endl; // prints out 0
}
Есть ли за этим веская причина или логика?
В этом случае я думаю, что это просто совпадение, что куча уже обнуляется в выделенной памяти.
Вы можете прочитать больше в ответах на этот похожий вопрос
Всегда инициализируйте вашу переменную чем-то значимым. В противном случае его можно принимать произвольно.
class Student {
public:
int x;
Student(): x(0) {}
};