С++ - язык, который изучается постепенно.Перегрузка.
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Перегрузка

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

Аргументы

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

void Fn();

29

void Fn(int);

void Fn(long); // Можно, если типы long и int отличаются размером

int Fn(int); // Нельзя - отличается только тип возвращаемого значения

int Fn(char*); // Можно, отличаются аргументы

void Fn(int, char*);

void Fn(char*, int); // Можно, аргументы следуют в другом порядке

void Fn(char* s, int x, int y = 17); // Можно - три аргумента вместо двух

Fn("hello", 17); // Ошибка - совпадают две сигнатуры

Пока аргументы отличаются, компилятор не жалуется на изменение возвращаемого типа.

Инициализация по умолчанию (такая как у=17) может присутствовать при объявлении функции, хотя позднее она может стать причиной неоднозначности при вызове функции (как в последней строке примера).

Константные функции

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

class Foo {

public:

void Fn();

void Fn() const; // Другая функция!

};

Foo* f = new Foo;

f->Fn(); // Вызывается неконстантная версия

const Foo* f1 = f;

f1->Fn(); // Вызывается константная версия


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz