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