Почему переменные экземпляра объектов стека времени выполнения отличаются от объектов кучи?

Могут быть и другие примеры, но это тот, с которым я только что столкнулся.

#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
}

Есть ли за этим веская причина или логика?

0

Решение

В этом случае я думаю, что это просто совпадение, что куча уже обнуляется в выделенной памяти.

Вы можете прочитать больше в ответах на этот похожий вопрос

1

Другие решения

Всегда инициализируйте вашу переменную чем-то значимым. В противном случае его можно принимать произвольно.

class Student {
public:
int x;
Student(): x(0) {}
};
0

По вопросам рекламы [email protected]