Учимся программировать на языке C++


ВСТРОЕННЫЕ ФУНКЦИИ И КЛАССЫ


Как вы уже знаете, при определении класса вы определяете функции этого класса внутри или вне класса. Например, класс employee определяет свои функции внутри самого класса:

class employee

{

public:

employee(char *name, char *position, float salary)

{

strcpy(employee::name, name);

strcpy(employee::position, position);

employee::salary = salary;

}

void show_employee(void)

{

cout "Имя: " name endl;



cout "Должность: " position endl;

cout "Оклад: $" salary endl;

}

private:

char name [64];

char position[64];

float salary;

};

Размещая подобным образом функции внутри класса, вы тем самым объявляете их встроенными {inline). Если вы создаете встроенные функции класса этим способом, C++ дублирует функцию для каждого создаваемого объекта этого класса, помещая встроенный код при каждой ссылке на метод (функцию) класса. Преимущество такого встроенного кода состоит в увеличении производительности. Недостатком является очень быстрое увеличение объема самого определения класса. Кроме того, включение кода функции в определение класса может существенно запугать класс, делая его элементы трудными для восприятия.

Для улучшения читаемости определений ваших классов вы можете вынести функции из определения класса, как вы обычно и делаете, и разместить ключевое слово inline перед определением функции. Например, следующее определение заставляет компилятор использовать встроенные операторы для функции show_employee:

inline void employee::show_employee(void)

{

cout "Имя: " name endl;

cout "Должность: " position endl;

cout "Оклад: $" salary endl;

}



Содержание раздела