![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
[m][a][n] |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Всем Добрый Вечер!
Зачем он нужен, как я понимаю для перегразки операторов? Большу ли часть роль он играет в C++? Вобщем, если можно расскажите, зачем он нужен и если не трудно привидите коротенький пример ... перегрузки оператора ... Зарание спасибо! |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Очень важен..
Привожу пример: У тебя есть класс вертекса и ты хочешь реализовать операцию сложения. У тебя есть два варианта: 1. Написать функции типа Vertex Vertex::Add(Vertex &phz); 2. Перегрузить оператор "+" Vertex Vertex::operator + (const Vertex &p) Ясен пень что v1 = v2+v3; лучше смотрится чем v1 = v2.Add(v3); Это сообщение отредактировал(а) chipset - 3.10.2004, 16:37 --------------------
|
|||
|
||||
[m][a][n] |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Понятно, а можно пример в виде кода привести?
Какой небудь простенький! Зарание спасибо! |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Примерно так.. --------------------
|
||||
|
|||||
[m][a][n] |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Большое спасибо!
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Спасибо рекомендуется выражать путём нажатия "+" справа от репутации участника ![]() -------------------- ![]() |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
mr.DUDA
![]() --------------------
|
||||
|
|||||
[m][a][n] |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Хорошо, теперь я буду щелкать по плюсикам
![]() Тем самым, выражая им благодарность ![]() Тем кто поможет мне, при ответах на следующие вопросы ![]() Это сообщение отредактировал(а) [m][a][n] - 4.10.2004, 18:47 |
|||
|
||||
Guest |
|
|||
Unregistered |
Или, например, можно перегрузить оператор == для строк ...
bool operator==(char *str1, char *str2); ![]() |
|||
|
||||
[m][a][n] |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Ясно
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Я бы отметил, что еще более важна возможность перегрузки операторов в случаях использования template (как пример можно посмотреть STL - standard template library). Основная идея теплейтов в том, что в них определяется что-то вроде каркаса, без учета типа данных. Тот же Vector, List, Map могут быть использованы для хранения любых типов данных. Также для таких данных используются всевозможные алгоритмы - сортировка, поиск и прочая. И сразу возникает вопрос - а как, например, можно отсортировать данные не используя оператор сравнения. На основе сравнения сортировка и происходит. И вот тут и вступают перегруженные операторы. Если мой алгоритм использует операторы "+", "<", ">" "==" и прочая, то для какого-то экстравагантного типа данных я могу и определить и использовать стандартные алгоритмы не изобретая велосипед. |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
AntonSaburov
по поводу сравнения, там вообще-то для сложных типов данных предикаты в шаблон передаются. Это сообщение отредактировал(а) DENNN - 8.10.2004, 09:22 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |