Как будет выглядеть итоговый скомпилированный код шаблонной функции при вызове с аргументами различных типов?

При компиляции шаблонной функции в C++ для каждого уникального набора типов аргументов компилятор генерирует отдельную версию функции (инстанцирует шаблон). Это значит, что если у вас есть шаблон:

Короткий ответ

Что ответить на собеседовании

При компиляции шаблонной функции в C++ для каждого уникального набора типов аргументов компилятор генерирует отдельную версию функции (инстанцирует шаблон). Это значит, что если у вас есть шаблон:

Подробный разбор

Ответ с пояснениями

При компиляции шаблонной функции в C++ для каждого уникального набора типов аргументов компилятор генерирует отдельную версию функции (инстанцирует шаблон). Это значит, что если у вас есть шаблон:

template<typename T>
T add(T a, T b) {
    return a + b;
}

и вы вызовете add(1, 2) и add(1.5, 2.5), то компилятор создаст две отдельные функции:

int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }

Таким образом, итоговый скомпилированный код содержит конкретные версии функции для каждого типа, с которым она была вызвана. Это позволяет использовать шаблоны как обобщённые функции без потери производительности, так как вызовы сводятся к обычным функциям с конкретными типами.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку