Выбрать главу

          }

          cout << "Программа завершена\n" ;

          /* Пауза для того, чтобы посмотреть на результат работы программы */

          system( "PAUSE" ) ; return 0 ;

      }

 

По сути, перед вами всё та же программа FunctionDemo, но теперь она суммирует квадраты введённых чисел. В функции square( ) играющее роль аргумента число возводится в квадрат. Проведены незначительные изменения и в функции sumSequence( ): если раньше мы суммировали введённые числа, то теперь суммируем значения, возвращаемые функцией square( ).  

Функции с несколькими аргументами...87

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

      int product( int arq1 , int arg2 )

      {

              return arg1 * arg2 ;

      }

Функция main( )...87

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

При компиляции программы С++ добавляет некоторый стандартный программный код, выполняемый до того, как начинает выполняться функция main( ). Этот код настраивает программную среду, в которой выполняется ваша программа, например открывает потоки ввода и вывода по умолчанию.

После настройки среды выполнения этот код вызывает функцию main( ), и лишь тогда происходит выполнение операторов программы. При завершении программа выходит из функции main( ), после чего вторая часть стандартного кода С++ освобождает занятые программой системные ресурсы и передаёт управление операционной системе.

_________________

87 стр. Глава 6. Создание функций

►Перегрузка функций...88

С++ позволяет программистам называть несколько разных функций одним и тем же именем. Эта возможность называется перегрузкой функций ( 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( ), так же как и меня можно называть просто Стефаном. Если бы Стефанов больше нигде не было, меня всегда могли бы называть только по имени. Но в действительности нас побольше, и если кому-то посчастливится попасть в общество нескольких Стефанов, то к ним придётся обращаться по имени и фамилии ( кстати, напомню, что меня зовут Стефан Дэвис ). Пользуясь полным именем, никто не ошибётся, даже если Стефанов будет несколько. Поэтому, пока полные имена функций в программе уникальны, конфликты между ними невозможны.

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