Встраиваемые функции в объявлении класса
Если определение функции-члена достаточно короткое, его можно включить в объявление класса. Поступив таким образом, мы заставляем, если это возможно, функцию стать встраиваемой. Если функция задается внутри объявления класса, ключевое слово inline не требуется. (Однако использование его в такой ситуации не является ошибкой.)
Пример. Традиционным использованием встраиваемых функций, определяемых внутри класса, является определение конструктора и деструктора. Например, класс samp может быть определен более эффективно. Определения функции samp() внутри класса samp достаточно, и никакого другого определения не требуется.
Пример. Иногда короткие функции могут включаться в объявление класса даже тогда, когда преимущества встраивания мало что дают или вовсе не проявляются. Рассмотрим следующее объявление класса:
Здесь функция show() по умолчанию становится встраиваемой. Однако, как вы, наверное, знаете, операции ввода/вывода, по сравнению с операциями процессор/память, являются настолько медленными, что какой бы то ни было эффект от устранения вызова функции практически отсутствует. Однако в программах на C++, как правило, можно встретить такие короткие функции внутри класса. Делается это просто для удобства, поскольку никакого вреда не приносит.
Пример. Традиционным использованием встраиваемых функций, определяемых внутри класса, является определение конструктора и деструктора. Например, класс samp может быть определен более эффективно. Определения функции samp() внутри класса samp достаточно, и никакого другого определения не требуется.
#includeusing namespace std; class samp { int i, j; public: // встраиваемый конструктор samp(int a, int b) { i = a; j = b; } int divisible() { return !(i%j); } };
class myclass { int i; public: myclass(int n) { i = n; } void show() { cout << i; } };