Возможный дубликат:
Что означают следующие фразы в C ++: нулевое значение, инициализация по умолчанию и инициализация значения?
Меня смущает проблема в C ++.
При создании объекта в стеке с использованием конструктора по умолчанию я думал, что любой из следующих двух синтаксических обозначений даст тот же результат:
class MyClass { public: int i; }
int main()
{
MyClass a = MyClass();
MyClass b;
}
Однако первый синтаксис инициализирует поле нулем, тогда как второй оставляет поле неинициализированным. Итак, мои вопросы:
- Почему это так? Я думал, что поля в C ++ не должны инициализироваться автоматически.
- Есть ли другие различия между двумя синтаксисами?
- Есть ли у этих вариантов синтаксиса отдельные имена, чтобы отличать их друг от друга?
В настоящее время я использую Microsoft Visual C ++ 2010 Express. Спасибо!