| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > operator |
| Автор: [m][a][n] 3.10.2004, 16:26 |
| Всем Добрый Вечер! Зачем он нужен, как я понимаю для перегразки операторов? Большу ли часть роль он играет в C++? Вобщем, если можно расскажите, зачем он нужен и если не трудно привидите коротенький пример ... перегрузки оператора ... Зарание спасибо! |
| Автор: chipset 3.10.2004, 16:34 |
| Очень важен.. Привожу пример: У тебя есть класс вертекса и ты хочешь реализовать операцию сложения. У тебя есть два варианта: 1. Написать функции типа Vertex Vertex::Add(Vertex &phz); 2. Перегрузить оператор "+" Vertex Vertex::operator + (const Vertex &p) Ясен пень что v1 = v2+v3; лучше смотрится чем v1 = v2.Add(v3); |
| Автор: [m][a][n] 3.10.2004, 16:39 |
| Понятно, а можно пример в виде кода привести? Какой небудь простенький! Зарание спасибо! |
| Автор: chipset 3.10.2004, 17:00 | ||
Примерно так.. |
| Автор: [m][a][n] 3.10.2004, 17:03 |
| Большое спасибо! |
| Автор: mr.DUDA 3.10.2004, 21:12 | ||
Спасибо рекомендуется выражать путём нажатия "+" справа от репутации участника |
| Автор: chipset 3.10.2004, 22:57 | ||
mr.DUDA
|
| Автор: [m][a][n] 4.10.2004, 18:44 |
| Хорошо, теперь я буду щелкать по плюсикам Тем самым, выражая им благодарность Тем кто поможет мне, при ответах на следующие вопросы |
| Автор: Guest 5.10.2004, 12:21 |
| Или, например, можно перегрузить оператор == для строк ... bool operator==(char *str1, char *str2); |
| Автор: [m][a][n] 6.10.2004, 14:39 |
| Ясно |
| Автор: AntonSaburov 7.10.2004, 11:38 | ||
Я бы отметил, что еще более важна возможность перегрузки операторов в случаях использования template (как пример можно посмотреть STL - standard template library). Основная идея теплейтов в том, что в них определяется что-то вроде каркаса, без учета типа данных. Тот же Vector, List, Map могут быть использованы для хранения любых типов данных. Также для таких данных используются всевозможные алгоритмы - сортировка, поиск и прочая. И сразу возникает вопрос - а как, например, можно отсортировать данные не используя оператор сравнения. На основе сравнения сортировка и происходит. И вот тут и вступают перегруженные операторы. Если мой алгоритм использует операторы "+", "<", ">" "==" и прочая, то для какого-то экстравагантного типа данных я могу и определить и использовать стандартные алгоритмы не изобретая велосипед. |
| Автор: DENNN 8.10.2004, 09:18 |
| AntonSaburov по поводу сравнения, там вообще-то для сложных типов данных предикаты в шаблон передаются. |