Наследство от языка Си - Функции |
Страница 45 из 51
4.6 Функции
Обычный способ сделать что-либо в С++ программе – это вызвать функцию, которая это делает. Определение функции яляется способом задать то, как должно делаться некоторое действие. Функция не может быть вызвана, пока она не описана.
4.6.1 Описания Функций
Описание функции задает имя функции, тип возвращаемого функцией значения (если таковое есть) и число и типы парамеров, которые должны быть в вызове функции. Например:
extern double sqrt(double); extern elem* next_elem(); extern char* strcpy(char* to, const char* from); extern void exit(int);
Семантика передачи параметров идентична семантике иницализации. Проверяются типы параметров, и когда нужно произвдится неявное преобразование типа. Например, если были заданы предыдущие определения, то
double sr2 = sqrt(2);
будет правильно обращаться к функции sqrt() со значением с плавающей точкой 2.0. Значение такой проверки типа и преоразования типа огромно.
Описание функции может содержать имена параметров. Это может помочь читателю, но компилятор эти имена просто игноррует.
4.6.2 Определения Функций
Каждая функция, вызываемая в программе, должна быть гдто определена (только один раз). Определение функции – это описание функции, в котором приводится тело функции. Напрмер:
extern void swap(int*, int*); // описание
void swap(int*, int*) // определение (* int t = *p; *p =*q; *q = t; *)
Чтобы избежать расходов на вызов функции, функцию можно описать как inline (#1.12), а чтобы обеспечить более быстрый доступ к параметрам, их можно описать как register (#2.3.11). Оба средства могут использоваться неправильно, и их следует избегать везде где есть какие-либо сомнения в их полезности.
|
online casino . Шри-Ланка: мнения спецов: Новый год на Шри-Ланке. Внимание! Туры на Новый 2010 год.