|
|
Функцию-член можно определить ($$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.
| |