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 подскажет развёрнутый ответ в реальном времени.