Все мы знаем, что если создать некую локальную переменную, например int a, в нее может попасть мусор и она не будет равна нулю, а может, например -2153245789. Когда мы создаем глобальные переменные, они всегда заполнены нулями или пустой строкой . А чем будут заполнены переменные (ниже из примера массив next, counter, children, isTerminal), если мы создаём их локально, изменится ли что то? Надо ли в конструкторе идти по массивам, переменным и присваивать значение 0, или всё таки оно инициализируется само?
const int E_SIZE = 26;
struct node {
int next[E_SIZE];
bool isTerminal;
int children;
int counter[E_SIZE];
node () {
}
};
int main() {
//...
vector <node> a;
a.push_back(node());
// a[0] теперь имеет два массива заполненные нулями, children = 0, isTerminal = false, или может попасть мусор?
return 0;
}
В вашем варианте - в полях класса мусор.
Если убрать конструктор node () {} (либо заменить его на node() = default;, но обязательно в теле класса, а не снаружи), то node() будет заполнять поля нулями (так же как и node{}, и node переменная{};). А вот node переменная; будет оставлять в полях мусор.
См. https://en.cppreference.com/w/cpp/language/default_initialization , https://en.cppreference.com/w/cpp/language/value_initialization
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости