Для чего в C++ добавлена конструкция constructor() = default;?

В C++, конструкция constructor() = default; добавлена для создания нескольких видов конструкторов в классе, включая конструкторы по умолчанию. Это позволяет программисту явно указать компилятору, что необходимо сгенерировать конструкторы по умолчанию для данного класса, вместо того, чтобы писать их вручную.

В языке C++, если в классе не определены конструкторы, компилятор генерирует конструктор по умолчанию автоматически. Однако, если в классе определен пользовательский конструктор, но разработчику все равно требуется конструктор по умолчанию, то он может воспользоваться конструкцией constructor() = default; для его генерации. Это особенно полезно, когда класс имеет много переменных-членов и требуется задать им значения по умолчанию.

Пример использования конструкции constructor() = default;:

class MyClass {
public:
    int a;
    double b;
    std::string c;

    MyClass() = default; //генерируется конструктор по умолчанию

    MyClass(int val1, double val2, std::string val3) {
        a = val1;
        b = val2;
        c = val3;
    }
};

В данном примере класс MyClass имеет три переменные-члена: a, b и c. Определен пользовательский конструктор, который принимает значения для инициализации этих переменных. Однако, если мы хотим также иметь возможность создавать объекты класса MyClass без передачи аргументов, мы можем добавить конструкцию MyClass() = default; Это позволит нам создавать объекты MyClass с помощью конструктора по умолчанию, который автоматически сгенерирует компилятор.

Использование конструкции constructor() = default; упрощает работу программиста, устраняет необходимость вручную определять конструктор по умолчанию и облегчает поддержку кода.