C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Помогите разобраться с перегрузками
dEEp
Отправлено: 17.09.2005, 14:55


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Вот фигня...
Не могу "врубиться" зачем существуют перегрузки (операторов, функций).
Может мне кто-нибудь объяснит как с ними работать, зачем они нужны, можно ли обойтись без них?
Только одна просьба...
Пишите как можно проще. Если пишите пример, то на Си-образном языке (C#, C++, C, C++ Builder, на VC++ не надо)
Спасибо за внимание!
Чик! ("выключил свет")

Отредактировано dEEp — 17/09/2005, 14:55
Георгий
Отправлено: 18.09.2005, 01:10


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



ну самый простой и наглядный пример — перегрузка вывода в ostream
CODE
ostream& operator<<(ostream& o, const TMyClassPtr *ptr)
{
if (!ptr) o<<"null";
else{
o<<"0x"<<((void*)ptr)<<" -> "<<ptr->SomeField;
};
return o;
};
вот такая перегрузка позволяет выводить в поток указатели на какой то свой класс, причём выводить по умному — сли указатель ннулевой, то так и пишется — null, если не нулевой, то выводится адрес и некое внутреннее поле объекта (например счётчик ссылок)

одним словом — перегрузка упрощает программирование

Отредактировано Георгий — 18/09/2005, 02:10
Sl@Sh
Отправлено: 19.09.2005, 10:48


Мастер участка

Группа: Участник
Сообщений: 383



Стандартный пример на эту тему можно почти в каждой книге найти : перегрузка стандартных математических операторов для выполнения операций с комплексными числами.

А перегрузку функций иногда действительно не нужна ( я имею ввиду когда несколько перегруженых функций может заменить один шаблон )

Удобно также перегружать комнструкторы. Посмотрите например все виды конструкторов класса string.

Вернуться в Флейм