Глава 11. Функции _____________________257

Хотя мы еще ничего не знаем о перегрузке функций, тем не менее попробуем определиться, когда лучше использовать значения аргументов по умолчанию вместо перегрузки.

Если разница между двумя функциями состоит только в значении передаваемого параметра, то следует использовать значение по умолчанию. Например, Foot) — достаточно хороший пример, поскольку этой функции должно передаваться целое число и 5 является подходящим значением по умолчанию.

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

• При различии в значениях аргумента используйте значения по умолчанию.

• При различии в типах данных аргумента используйте перегрузку функций.

»

Таким образом у вас появляется возможность сократить количество функций-близнецов и, соответственно, число имен функций. Это поможет вам при разработке, отладке и сопровождении больших программ.

Спецификаторы функций

Мы рассмотрели наиболее общие аспекты функций. Теперь обратим внимание на спецификаторы функций, с помощью которых можно внести в программирование на C++ дополнительные удобства. Многое уже было рассмотрено в общих чертах в главе 9 "Описатели и спецификаторы данных". Настало время конкретно познакомиться с ними в контексте функций. Начнем с ключевого слова inline, которое дает нам возможность совместить все достоинства полноценных функций с некоторыми преимуществами макроопределений.

Встраиваемые функции

Ключевое слово inline предписывает компилятору вместо вызова определенной таким образом функции подставить ее код. Сам спецификатор располагается в начале интерфейса функции:

inline return type func name( args list);

Примерно то же самое препроцессор делает с макросами, но встраиваемые функции (inline functions) позволяют задавать типы аргументов, благодаря чему компилятор может осуществлять синтаксический контроль таких функций.

9. Зак.306