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.
|
|