Что такое конструктор (constructor) в C++?

«Что такое конструктор (constructor) в C++?» — вопрос из категории C++ Core, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конструктор — это специальная функция-член класса в C++, которая автоматически вызывается при создании объекта (экземпляра класса). Его основная задача — инициализировать состояние объекта.

Ключевые особенности:

  • Имя конструктора совпадает с именем класса.
  • Не имеет возвращаемого типа (даже void).
  • Может быть перегружен (несколько конструкторов с разными параметрами).
  • Если программист не объявляет ни одного конструктора, компилятор генерирует конструктор по умолчанию.

Примеры конструкторов:

class Widget {
private:
    int id;
    std::string name;
public:
    // 1. Конструктор по умолчанию
    Widget() : id(0), name("Default") {}

    // 2. Параметризованный конструктор (использует список инициализации)
    Widget(int i, const std::string& n) : id(i), name(n) {}

    // 3. Конструктор копирования
    Widget(const Widget& other) : id(other.id), name(other.name) {
        std::cout << "Copy constructor calledn";
    }
};

// Использование:
Widget w1;               // Вызов конструктора по умолчанию
Widget w2(42, "Answer"); // Вызов параметризованного конструктора
Widget w3 = w2;          // Вызов конструктора копирования

Важно: Конструкторы, принимающие один аргумент, могут участвовать в неявных преобразованиях типов. Чтобы запретить это, используйте ключевое слово explicit.