Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Choopa
17 / 17 / 0
Регистрация: 03.04.2011
Сообщений: 89
#1

Перегрузка операторов - C++

07.04.2011, 06:11. Просмотров 2518. Ответов 11
Метки нет (Все метки)

Расскажите пожалуйста про перегрузку в классе:
всегда ли в ней должен быть return и что в нём должно быть
её типы(void, int, и т.д.) и почему ставят * или &
как вызывать двойные операторы (++, --, +=, и т.д.)
можно ли сделать её к пустому типу? Напр. конструкция b+;
И можно ли её сделать наоборот? Напр. конструкция +b;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 06:11     Перегрузка операторов
Посмотрите здесь:

Перегрузка операторов - C++
Доброго времени суток! Столкнулся с такой проблемой, перегрузка операторов. Имею работающий код, но не смог сделать по своему заданию. ...

Перегрузка операторов - C++
Решите пожалуйсто задачу: Разработайте программу, в которой реализована перегрузка оператора «^». Оператор «^» должен возводить...

C++ перегрузка операторов - C++
люди такая ситуация кто может в краце объясните перегрузку операторов мне например надо перегрузить оператор умножения что бы умножить...

Перегрузка операторов - C++
Создайте класс Fraction (обыкновенная дробь), в котором реализовать перегрузку: оператора суммирования дробей, оператора суммирования дроби...

перегрузка операторов - C++
#include <iostream> #include <Windows.h> using namespace std; class CBox { private: double Width; double Height; ...

Перегрузка операторов с++ - C++
Доброго времени суток!Вот у меня перегрузка оператора +.Задание сделапть пергрузку так чтобы к строке можно было добавить символ и к...

Перегрузка операторов - C++
Перегрузить оператор ввода, вывода для строки; Перегрузить операторы: +, =, +=, >, <, == .

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.04.2011, 07:40     Перегрузка операторов #2
Choopa, Операторы разделяются на унарные и бинарные. Унарные это например & - асперанд, * - дереференс, -> - оператор стрелочка, ++ инкремент и т.п.
Бинарные - +, -, *, /, +=, *= и т.п.
Логично что бинарные в основном должны возвращать либо ссылку на объект класса либо объект класса.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.04.2011, 07:52     Перегрузка операторов #3
Добавлю, что нельзя создавать новые операторы (какой-нибудь оператор #), а так же менять параметры существующих операторов: унарность на бинарность и наоборот (вроде a!b, a-), префиксность на постфиксность и наоборот (*a на a*).
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.04.2011, 13:20     Перегрузка операторов #4
silent_1991, А так же нельзя перегружать некоторые операторы.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.04.2011, 13:22     Перегрузка операторов #5
ForEveR, в частности, ".", "::", "?:")))
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.04.2011, 13:24     Перегрузка операторов #6
silent_1991, sizeof забыл (ежели я не ошибаюсь он все же оператор).
Ну и в X-ах можно будет определять свои литералы.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.04.2011, 13:27     Перегрузка операторов #7
ForEveR, хм... даже мысли никогда не было его перегружать
Choopa
17 / 17 / 0
Регистрация: 03.04.2011
Сообщений: 89
08.04.2011, 06:33  [ТС]     Перегрузка операторов #8
А можно примерчик на c++ унарного оператора, если не трудно
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
08.04.2011, 07:03     Перегрузка операторов #9
Вообще-то функция перегрузки оператора отличается от обычной только тем, что может вызываться не только по имени, но и через выражение, состоящее в применении встроенного оператора к объектам, которые ваша функция способна воспринять как свои аргументы (поэтому конструкция b+ не проканает, так как встроенный унарный оператор плюс является префиксным).
Все остальное, т.е. тип возвращаемого значения и действия вашей функции целиком зависят от вашей фантазии и той функциональности, которую вы хотите ей придать.
Если же вы хотите, чтобы ваша перегрузка действовала подобно встроенному оператору, только для новых типов, то имеет смысл использовать для этого канонические формы перегрузки, приведенные в учебниках.
Choopa
17 / 17 / 0
Регистрация: 03.04.2011
Сообщений: 89
13.04.2011, 05:30  [ТС]     Перегрузка операторов #10
Я тут почитал лекции и нашёл что вот так работает
Class d{
d & operator ++(){}
}
main()
{
d x;
++x;
}
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.04.2011, 08:11     Перегрузка операторов #11
Ииии? Существует префиксаная версия инкремента/декремента, ничего нового вы не "создали".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2011, 10:12     Перегрузка операторов
Еще ссылки по теме:

Перегрузка операторов - C++
Здравствуйте! Сейчас читаю книгу: "Искусство программирование на С++" Шилдта. Часто встречается перегрузка. Заметил, что в некоторых...

перегрузка операторов - C++
здравствуйте. недавно разбираю с С++, и как у всех начинающих возникла очередная непонятка, которую неудаетс победить самостоятельно. ...

перегрузка операторов - C++
Имеется такая программа: class reversion { vector<int> mass1; vector<int> mass2; vector<int> rev1; vector<int> rev2; ...

Перегрузка операторов - C++
Столкнулся с проблемой при написании лабораторной по перегрузке операторов. Задание таково: описать класс, содержащий координаты отрезка,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
13.04.2011, 10:12     Перегрузка операторов #12
Цитата Сообщение от Choopa Посмотреть сообщение
Напр. конструкция b+;
Такой конструкции не существует.
Yandex
Объявления
13.04.2011, 10:12     Перегрузка операторов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru