Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
1

Зачем перегружать операторы "++", "<<", ">>" и что они дают?

28.09.2015, 18:38. Просмотров 567. Ответов 10
Метки нет (Все метки)

Здравствуйте.
Я хотел спросить зачем перегружать оператор "++", "<<", ">>" и что они нам дают?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2015, 18:38
Ответы с готовыми решениями:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить...

Visual Studio не читает операторы, что начинаются на "glu" ("gluBuild2DMipmaps", "gluPerspective")
Данный код должен выводить на экран кубик который должен вращаться, но возникла...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран...

10
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
28.09.2015, 18:49 2
Цитата Сообщение от vladdramachev Посмотреть сообщение
Я хотел спросить зачем перегружать оператор "++", "<<", ">>" и что они нам дают?
Да х.з., хотел ты спросить или нет. Спроси у того, кому ты об этом говорил.
0
wismbel
28.09.2015, 18:51
  #3

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Да х.з., хотел ты спросить или нет. Спроси у того, кому ты об этом говорил.
Учим русскому? :)

0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
28.09.2015, 18:56 4
vladdramachev, это делается, чтобы созданные пользователем (например, тобой) классы могли использовать эти операторы подобно тому, как это делаеют встроенные типы. Например, есть у тебя класс Машина (Car). И ты хочешь, чтобы выводить информацию об этом классе не в виде функции, типа такой:
C++
1
2
3
4
// some code before
Car mycar;
mycar.show();
// some code after
а с помощью объекта cout:
C++
1
2
3
4
// some code before
Car mycar;
std::cout << mycar;
// some code after
0
castaway
28.09.2015, 19:03
  #5

Не по теме:

wismbel, понемногу.

0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
28.09.2015, 19:05 6
То же самое с оператором инкремента. Ну вот захотелось тебе писать не так:
C++
1
2
3
4
5
6
// some code before
Matrix mymatrix;
for (int i = 0; i < mymatrix.rsize(); ++i)
    for (int j = 0; j < mymatrix.csize(); ++j)
        mymatrix[i][j] = mymatrix[i][j] + 1;
// some code after
а вот так:
C++
1
2
3
4
// some code before
Matrix mymatrix;
++mymatrix;
// some code after
Как это сделать без перегрузки операторов? Никак же.
0
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
28.09.2015, 20:43  [ТС] 7
gru74ik,То есть перегрузка операторов предназначена для работы с самим объектом класса?
0
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
28.09.2015, 21:04 8
Цитата Сообщение от vladdramachev Посмотреть сообщение
То есть
оператор это обычный метод

C++
1
2
a+b;
a.operator+(&b);
Я предпочитаю методы - они привычнее для меня.

C++
1
Matrix.add(-7);
чем

C++
1
2
Matrix a;
a+7;
0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
28.09.2015, 21:19 9
Цитата Сообщение от vladdramachev Посмотреть сообщение
То есть перегрузка операторов предназначена для работы с самим объектом класса?
Ну конечно. Ведь выражение с обычным оператором, например такое:
C++
1
2
3
4
// some code before
Car mycar;
std::cout << mycar;
// some code after
можно записать и в виде функции c двумя аргументами:
C++
1
2
3
4
// some code before
Car mycar;
operator<<(std::cout, mycar); 
// some code after
0
Миниатюры
Зачем перегружать операторы "++", "<<", ">>" и что они дают?  
rikimaru2013
28.09.2015, 21:27
  #10

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
можно записать и в виде функции c двумя аргументами
повторюха-муха

0
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
28.09.2015, 21:43 11
rikimaru2013, я повторюха-муха, я летаю и жужжу, а ещё у меня есть штучка - никому не покажу

0
28.09.2015, 21:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2015, 21:43

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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