Шаг 58.
Подставляемые (inline) функции

    Этот шаг посвящен еще одному "экзотическому" свойству функций.

    Некоторые функции в языке C++ можно определить с использованием специального служебного слова inline. Спецификатор позволяет определить функцию как встраиваемую, то есть подставляемую в текст программы в местах обращения к этой функции. Например, следующая функция определена как подставляемая:

     inline float module(float x = 0, float у = 0) 
       { return sqrt(x * x + у * у); }

    Обрабатывая каждый вызов встраиваемой функции, компилятор "пытается" подставить в текст программы код операторов ее тела. Тем самым при многократных вызовах подставляемой функции размеры программы могут увеличиться, однако исключаются затраты на передачи управления к вызываемой функции и возвраты из нее. Кроме того, подстановка функции позволяет проводить оптимизацию кода. Наиболее эффективно использовать подставляемые функции в тех случаях, когда тело функции состоит всего из нескольких операторов.

    Перечислим причины, по которым функция со спецификатором inline будет трактоваться как обычная не подставляемая:

    Если же для функции со спецификатором inline компилятор не может выполнить подстановку из-за контекста, в который помещено обращение к ней, то функция считается статической (static) и выдается предупреждающее сообщение. Еще одна особенность подставляемых функций - невозможность их изменения без перекомпиляции всех частей программы, в которых эти функции вызываются.

    Следующий шаг будет посвящен вопросам передачи массивов в функции.


Предыдущий шаг Содержание Следующий шаг