Mediuminline
Чем inline-функция отличается от обычной?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Inline — подсказка компилятору встроить тело функции прямо в место вызова, избегая overhead на call/return. Главное современное значение: inline позволяет определять функцию в заголовке без нарушения ODR (может быть определена в нескольких TU).
// header.h
inline int square(int x) { return x * x; } // можно в нескольких TU
// метод, определённый внутри класса — неявно inline
struct Vec {
int x, y;
int len() const { return x * x + y * y; } // неявно inline
};- Преимущества: устранение overhead на вызов, компилятор видит тело и лучше оптимизирует;
- Минус: может увеличить размер кода (code bloat);
- Современные компиляторы сами решают inline’ить —
inlineвлияет в основном на ODR.
Для принудительного inline есть compiler-specific атрибуты (__attribute__((always_inline))).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.