Easyперегрузка
Что такое перегрузка функций (overloading)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Overloading — несколько функций с одним именем, но разными параметрами (количеством или типами). Компилятор выбирает нужную через overload resolution: точное совпадение > стандартные преобразования > user-defined > variadic.
void print(int x);
void print(double x);
void print(int x, int y);
void print(const std::string& s);
print(42); // print(int)
print(3.14); // print(double)
print(1, 2); // print(int, int)- Возвращаемый тип в разрешении не участвует (нельзя перегружать только по возврату);
- Перегрузки должны быть в одной области видимости (иначе — hiding rule);
- Перегрузку операторов можно делать для пользовательских типов.
Перегрузки можно делать шаблонами, но resolution между шаблонами и не-шаблонами сложна.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.