В настоящее время я прохожу курс с ++ и пытаюсь глубоко понять все это.
Я выдвинул некоторые теории, было бы замечательно, если бы кто-то мог подтвердить их:
Гарантируется, что каждая переменная (локальная, глобальная, staic, member и non-member) будет вызывать свой ctor перед первым использованием
Которы примитивов, таких как int, по существу не используются, поэтому мы явно присваиваем значение, нулевое значение по умолчанию отсутствует.
следующие классы семантически одинаковы (и должны генерировать идентичный код)
class A
{
int n;
};
и
class A
{
int n;
public:
A() : n() {}
};
и
class A
{
int n;
public:
A() { n = int(); }
};
Переменная n в каждом случае все еще неинициализирована.
EDIT:
Кажется, я совершенно недооценил сложность этого предмета, большинство моих предположений были неверными. Сейчас я все еще пытаюсь выяснить основные правила инициализации объекта.