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

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

Войти
Регистрация
Восстановить пароль
 
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
#1

Для чего нужен "operator"? - C++

11.10.2011, 18:30. Просмотров 611. Ответов 2
Метки нет (Все метки)

Вот такой пример :
One One::operator+=(One & rhs)
{

*itsA+=rhs.Get();
return *this;
}

Вообще ну ни как не могу догнать для чего нужен этот operator и что не правильно в этом примере при сумирование ??? Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 18:30     Для чего нужен "operator"?
Посмотрите здесь:

Создание перегрузки метода "operator =" для типа, расположенного в ином namespace - C++
Здравствуйте. Столкнулся со следующей проблемой которая упрощено выглядит так namespace M{ struct A{ int b; ...

Для чего в коде нужна строка "using namespace std"? - C++
у меня возникла проблема при удалении "using namespace std;" перестает работать cout точнее пишет Build FAILED. File2.cpp(11,6):...

Для чего нужно дописывать "**", две звездочки? - C++
есть чужой код, на основе которого я делаю свой вариант. double **b = copy_m(a, n); по идее b двумерный массив, в который...

Для чего функции поместили в "тип данных"? - C++
Вопрос про функции. Для чего функции поместили в "тип данных"?

Для чего именно и как исползуется dynamic_cast(обясните "ЯЗИКОМ ЧЕЛОВЕКА") - C++
привет ребята ктото может привести хороший пример о dynamic_cast ?(об осталних я выучил).. Именно для чего он...

для чего и как исползовать "template"? - C++
Привет всем... может ктото обяснит как исползовать template? спасибо заранее... П.С гугл не впомош, если ктото даст пример то...

Для чего используют класс "Стек"? - C++
Подскажите для чего используют класс стек и зачем он вопще нужен?

C++, для чего служит указатель "this->"? - C++
Для чего нужен указатель "this"?

Ошибка в коде "no match for 'operator[]' (operand types are 'Student' and 'int')" - C++
Помогите пожалуйста разобраться, в чём проблема? Весь код: #include "windows.h" #include <stdio.h> #include <string.h> #include...

Ошибка при перегрузке "operator ==" в классе - C++
Если объявляю operator== в классе, то ошибка слишком много параметров для функции оператора #include <iostream> class comp {...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.10.2011, 18:34     Для чего нужен "operator"? #2
C++
1
2
3
4
5
One& One::operator += (const One& rhs)
{
    *itsA += *rhs.itsA; 
    return *this;
}
это перегрузка оператора +=
позволяет применять к объектам +=
Сыроежка
Заблокирован
11.10.2011, 18:41     Для чего нужен "operator"? #3
Цитата Сообщение от bearwoolfs Посмотреть сообщение
Вот такой пример :
One One::operator+=(One & rhs)
{

*itsA+=rhs.Get();
return *this;
}

Вообще ну ни как не могу догнать для чего нужен этот operator и что не правильно в этом примере при сумирование ??? Спасибо
Для встроенных типов, как, например, типа int, вы можете писать арифметические выражения вида

C++
1
2
3
4
int x = 10;
int y = 5;
 
x += y;
Очевидно, что для типов, определенных пользователем, таких встроенных арифметических операций нет, так как компилятор не знает, что вы имеете в виду для своего определенного типа под оператором +=. Чтобы можно было этот оператор использовать с определенными пользователем типами, как, например, с типом One из вашего примера, вам позволяется самому задать определение операции += для типа One. Это и делается в приведенном вами коде. Поэтому если у вас есть переменные типа One x и y, то для них, как и для встроенных типов, вы можете написать выражение

C++
1
x += y;
Когда компилятор встретит в коде эту строчку, он заменит ее на вызов определенной вами функции-оператора x.operator +=( y ).
Ответ Создать тему
Опции темы

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