ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 5) онлайн

Резюме

Функции позволяют обеспечить внутреннюю организованность программы и со- кратить размер ее кода, присваивая повторяющимся фрагментам программы имя и заменяя этим именем все повторения, встречающиеся в программе. Объявле- ние, или прототип функции задает общий вид функции, вызов функции переда- ет управление в функцию, а определение функции задает совокупность дейст- вий, выполняемых функцией. Первая строка в определении функции называется спецификатором функции.

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

Функция может возвращать только одно значение. Как правило, функция производит возврат по значению, но возможен и возврат по ссылке, что позво- ляет использовать вызов функции в качестве левого операнда операции при- сваивания. Структурные переменные могут выступать как в роли аргументов, так и в роли возвращаемых значений.

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

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

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

Переменные имеют характеристику, которая называется класс памяти. Наи- более простым и распространенным классом памяти является автоматический. Локальные переменные имеют автоматический класс памяти: они существуют только до тех пор, пока не завершится исполнение вызова функции. Кроме того, эти переменные видны только внутри тела функции. Глобальные переменные имеют статический класс памяти: время их существования определяется време- нем выполнения программы. Кроме того, глобальные переменные видимы во всем исходном файле, начиная с места их объявления. Статические локальные переменные существуют на всем протяжении процесса выполнения программы, но область их видимости ограничена той функцией, к которой они принадлежат.

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

В главе 4 мы изучили первую из двух основных составляющих объектов — структуры, представляющие собой объединения данных. В этой главе познако- мились со второй составляющей — функциями. Теперь мы готовы объединить эти две компоненты в одну и приступить к созданию объектов, чем мы и зай- мемся в следующей главе.

 

37