Читаем С++ для "чайников" . полностью

С++ позволяет программистам называть несколько разных функций одним и тем же именем. Эта возможность называется перегрузкой функций ( function overloading ).

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

Однако используемое компилятором внутреннее имя функции включает число и типы аргументов ( но не возвращаемое значение ), и поэтому следующие функции являются разными:

      void someFunction( void ) 

      {

           /* ...Выполнение некоторой функции */

      }

      void someFunction( int n )

      {

           /* ...Выполнение другой функции */

      }

      void someFunction( double d )

      {

           /* ...Выполнение ещё одной функции */

      }

      void someFunction( int n1 , int n2 )

      {

           /* ...Выполнение ещё одной функции, отличной от предыдущих */

      }

Компилятор С++ знает, что функции someFunction( void ), someFunction( int ), someFunction( double ), someFunction( int , int ) не одинаковы. В мире компьютеров встречается довольно много таких вещей, для которых можно найти аналогии в реальном мире. Существуют они и для перегрузки функций.

Вы знаете, что тип аргумента void указывать не обязательно. Например, SumFunction( void ) и SumFunction( ) вызывают одну и ту же функцию. Фактически функция может иметь сокращённое название, в нашем случае someFunction( ), так же как и меня можно называть просто Стефаном. Если бы Стефанов больше нигде не было, меня всегда могли бы называть только по имени. Но в действительности нас побольше, и если кому-то посчастливится попасть в общество нескольких Стефанов, то к ним придётся обращаться по имени и фамилии ( кстати, напомню, что меня зовут Стефан Дэвис ). Пользуясь полным именем, никто не ошибётся, даже если Стефанов будет несколько. Поэтому, пока полные имена функций в программе уникальны, конфликты между ними невозможны.

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

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

      int intVariable1 , intVariable2 ;

      double doubleVariable ;

      /* Функции различаются по типу передаваемых аргументов */

     someFunction( ) ; /* Вызов someFunction( void ) */

     someFunction( intVariable1 ) ; /* Вызов someFunction( int ) */

     someFunction( doubleVariable ) ; /* Вызов someFunction( double ) */

     someFunction( intVariable1 , intVariable2 ) ; /* Вызов someFunction( int , int ) */

      /* С константами функции работают аналогично */

      someFunction( 1 ) ; /* Вызов someFunction( int )*/

      someFunction( 1.0 ) ; /* Вызов someFunction( double ) */

      someFunction( 1 , 2 ) ; /* Вызов someFunction( int , int ) */

_________________

88 стр. Часть 2. Становимся функциональными программистами

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

«Тип возвращаемого значения в полное имя функции ( называемое также её сигнатурой ) не входит. Следующие две функции имеют одинаковые имена ( сигнатуры ) и поэтому не могут использоваться в одной программе:

    int someFunction( int n ) ;

    /* Полным именем этой функции является someFunction( int ) */

    double someFunction( int n ) ; /* Имеет то же полное имя */

»

[Атас!]

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

    int someFunction( int n ) ;

    double d = someFunction( 10 ) ;

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных