Инициализация по умолчанию и инициализация значения C ++: which is which, которая вызывается, когда и как надежно инициализировать элемент типа шаблона

Мой вопрос частично перекликается с этим и несколькими другими подобными. У них есть отличные ответы, но я их читал и все еще не понимаю, поэтому, пожалуйста, не считайте этот вопрос дубликатом.

Итак, у меня есть следующий код:

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 .

22
задан Community 23 May 2017 в 12:01
поделиться