Путем встраивания компилятор вставляет реализацию функции в вызывающую точку.
То, что вы делаете с этим - это удаление накладных расходов на вызов функции.
Тем не менее, нет никакой гарантии, что все ваши кандидаты на встраивание будут на самом деле встроены компилятором. Однако для небольших функций компиляторы всегда встроены.
Поэтому, если у вас есть функция, которая вызывается много раз, но имеет ограниченный объем кода - пару строк, - вы могли бы извлечь выгоду из встраивания, потому что издержки вызова функции могут занять больше времени, чем выполнение самой функции.
Классическим примером хорошего кандидата на встраивание являются геттеры для простых конкретных классов.
CPoint
{
public:
inline int x() const { return m_x ; }
inline int y() const { return m_y ; }
private:
int m_x ;
int m_y ;
};
Некоторые компиляторы (например, VC2005) имеют опцию агрессивного встраивания, и вам не нужно указывать ключевое слово «inline» при использовании этой опции.