Я пытаюсь узнать о работе конструктора по умолчанию класса и не могу разобраться в этой ситуации:
Дело 1:
class A
{
public:
int m;
string s;
};
Затем я создаю объект этого класса:
а) A a; // Result: compiler initializing m with garbage value
б) A a = A(); // Result : compiler initializing m with garbage value
Случай 2: Теперь я удалил строку s
из своего класса:
class A
{
public:
int m;
};
a) A a; // Result: when try to access m I get run time error
b) A a = A(); //Result: m is initialized to zero
Q1) Почему существует несоответствие в случае 1 и случае 2?
Q2) Что, если я предоставлю конструктор по умолчанию для своего класса в обоих случаях, тогда а) и б) будут одинаковыми?
m
должен быть неинициализирован, но не должен вызывать ошибку времени выполнения... - person Matteo Italia   schedule 19.12.2012