Спецификатор
inline
позволяет объявлять inline-функции. Функция, определённая внутри тела класса, является inline по умолчанию. Изначально inline-функции задумывались как функции, являющиеся хорошими кандидатами на оптимизацию, при которой в местах обращения к функции компилятор вставит тело этой функции, а не код вызова. В действительности компилятор не обязан реализовывать подстановку тела для inline-функций, но может, исходя из заданных критериев оптимизации, выполнять подстановку тела для функций, которые не объявлены как inline
. Пожалуй, наиболее значимой особенностью inline-функции является то, что она может многократно определяться в нескольких единицах трансляции (при этом inline-функция должна быть определена во всех единицах трансляции, где она используется), в то время как функция, не являющаяся inline, может определяться в программе не более одного раза. Пример:inline double Sqr(double x) {return x*x;}
. "Вследствие абстракции данных члены - функции классов выносят за их пределы, поэтому нужно не забывать описывать такие функции с префиксом inline, но это не панацея, так как компилятор сам решает как именно ему действовать в этой ситуации (в принципе, если функция несложна, то думаю, компилятор даст зеленый свет на активацию inline для сие функций).