Все мы знаем, что если создать некую локальную переменную, например 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вечер добрыйНужно написать функцию удаления каждого второго элемента списка
Пытаюсь в силу своих знаний написать движок дли игры в русские шашки на C++ (если точнее, уже по большей части написал)Требуется определить,...
У меня есть две функции, 1 для записи в файл предложения ,2 для чтения его и сохранения предложения в переменную, но когда я хочу вывести предложение...