Встраиваемые функции в объявлении класса

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

Пример. Традиционным использованием встраиваемых функций, определяемых внутри класса, является определение конструктора и деструктора. Например, класс samp может быть определен более эффективно. Определения функции samp() внутри класса samp достаточно, и никакого другого определения не требуется.
#include 
using 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; }
};
Здесь функция show() по умолчанию становится встраиваемой. Однако, как вы, наверное, знаете, операции ввода/вывода, по сравнению с операциями процессор/память, являются настолько медленными, что какой бы то ни было эффект от устранения вызова функции практически отсутствует. Однако в программах на C++, как правило, можно встретить такие короткие функции внутри класса. Делается это просто для удобства, поскольку никакого вреда не приносит.
Онлайн всего: 3
Гостей: 3
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте