Мой вопрос несколько перекрывается с этим и несколькими другими подобными. У них есть отличные ответы, но я их прочитал, и я все еще смущен, поэтому, пожалуйста, не рассматривайте этот вопрос как дубликат.
Итак, у меня есть следующий код:
class A {
public: int _a;
}
void main()
{
A inst1;
A* inst2 = new A;
A* inst3 = new A();
}
_a
остается неинициализированным в inst1
и inst2
и инициализируется на 0
в inst3
.
Какая инициализация называется, и почему код работает так, как он есть? Пожалуйста, учтите, что у меня нет стандарта С++ 03, но у меня есть последний проект С++ 11 (я программирую по стандарту '03, хотя), поэтому цитаты из стандарта '03 или ссылки на '11 приветствуются.
Р. S. Первоначальная задача этого исследования состояла в том, чтобы правильно zeto-инициализировать член произвольного типа шаблона T
.