Ура и чт. - Альф сделал комментарий в этом ответе, что инициализация значения, возможно, является новой функцией C++03 по сравнению с C++. 98. Интересно, что он имел в виду.
Является ли инициализация значения частью C++98? Он присутствует в концепции, но не в названии? Почему он был добавлен в стандарт C++03?
У меня есть копия стандарта 03 года, но не стандарта 98 года. Вот определение инициализации по умолчанию и инициализации значения.
Инициализация по умолчанию объекта типа T означает:
- если T не является типом класса POD (пункт 9), вызывается конструктор по умолчанию для T (и инициализация является некорректной, если T не имеет доступного конструктора по умолчанию);
— если T является типом массива, каждый элемент инициализируется по умолчанию;
— в противном случае объект инициализируется нулями.
Инициализация значения объекта типа T означает:
- если T является типом класса (раздел 9) с конструктором, объявленным пользователем (12.1), то вызывается конструктор по умолчанию для T (и инициализация некорректна, если у T нет доступного конструктора по умолчанию);
- если T является типом класса без объединения без объявленного пользователем конструктора, то каждый нестатический член данных и компонент базового класса T инициализируется значением;
— если T — тип массива, то каждый элемент инициализируется значением;
— в противном случае объект инициализируется нулями
Я предполагаю, что в '98 была инициализация по умолчанию, но не инициализация значения, и что между ними есть некоторая ключевая разница. Честно говоря, у меня возникли проблемы с разбором стандарта здесь, и я не понимаю разницы между определениями.