Язык программирования C++. Вводный курс


Как перегрузить имя функции


В C++ двум или более функциям может быть дано одно и то же имя при условии, что их списки параметров различаются либо числом параметров, либо их типами. В данном примере мы объявляем перегруженную функцию max():

int max ( int, int );

int max( const vector<int> & );

int max( const matrix & );

Для каждого перегруженного объявления требуется отдельное определение функции max() с соответствующим списком параметров.

Если в некоторой области видимости имя функции объявлено более одного раза, то второе (и последующие) объявление интерпретируется компилятором так:

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

// перегруженные функции

void print( const string & );

void print( vector<int> & );

·                  если тип возвращаемого значения и списки параметров в объявлениях двух функций одинаковы, то второе объявление считается повторным:

// объявления одной и той же функции

void print( const string &str );

void print( const string & );

Имена параметров при сравнении объявлений во внимание не принимаются;

если списки параметров двух функций одинаковы, но типы возвращаемых значений различны, то второе объявление считается неправильным (несогласованным с первым) и помечается компилятором как ошибка:

unsigned int max( int i1, int i2 );

int max( int i1, int i2 ); // ошибка: отличаются только типы

                           // возвращаемых значений

Перегруженные функции не могут различаться лишь типами возвращаемого значения;

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




Начало  Назад  Вперед



Книжный магазин