logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.9.3.2 Функции-члены со спецификацией inline

Функцию-член можно определить ($$R.8.3) в описании класса, в

таком случае она считается подстановкой (inline, $$R.7.1.2).

Определять функцию в описании класса - это эквивалентно тому,

чтобы описывать функцию и определять ее со спецификацией inline

сразу же после описания класса. Считается, что такой перенос

определения функции происходит после препроцессорной обработки

до стадии синтаксического анализа и контроля типов. Поэтому

программный фрагмент

int b;

struct x {

char* f() { return b; }

char* b;

};

эквивалентен

int b;

struct x {

char* f();

char* b;

};

inline char* x::f() { return b; } // перенос

Здесь в функции x::f() используется x::b, а не глобальное b.

Функции-члены можно определять даже в описании локальных или

вложенных классов, где такой перенос будет синтаксически незаконным.

Локальные классы обсуждаются в R.9.8, а вложенные классы в $$R.9.7.