Mediumконструктор
Что такое delegating constructor?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Delegating constructor (C++11) — конструктор вызывает другой конструктор того же класса в initializer list. Уменьшает дублирование: общая инициализация в одном конструкторе, остальные его вызывают.
class Point {
int x_, y_;
public:
Point(int x, int y) : x_(x), y_(y) { validate(); } // целевой
Point() : Point(0, 0) {} // делегирует
Point(int x) : Point(x, 0) {} // делегирует
};- До C++11 общую логику выносили в private
init()метод; - Ограничение: если конструктор делегирует, он не может иметь других members в initializer list — delegation должен быть единственным;
- Рекурсивная delegation (A → B → A) — UB.
Часто применяется в связке с default arguments.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.