У меня есть одно сомнение в std :: unique_ptr.
Когда мы назначаем std :: make_unique () без аргументов, что произойдет?
Например,
struct A {
int a, b;
A() {}
A(int w, int e) : a(w), b(e) {}
};
int main() {
A h(1, 2);
std::unique_ptr<A> hello = std::make_unique<A>();
std::cout << hello->a << std::endl;
}
В приведенном выше коде, я упомянул конструктор по умолчанию, я получил вывод hello-> a в качестве значения мусора (случайное отрицательное значение)
Но, когда я изменяю структуру, как показано ниже,
struct A {
int a, b;
A() {a=0;b=0;}
A(int w, int e) : a(w), b(e) {}
};
Результирующее значение hello-> a как 0.
Почему конструктор по умолчанию не назначает int как 0 при использовании std :: make_unique ()?