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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
proggr
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 3
#1

перегрузка & operator+= - C++

24.03.2011, 11:44. Просмотров 1193. Ответов 11
Метки нет (Все метки)

Изучая C++, наткнулся в одном из упражнений на такое выражение: Port & operator+=(int b).

Зная, что x+=y можно представить как x = x + y, не пойму, можно ли представить так же и вышеприведенное выражение? Если можно, то каким образом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 11:44     перегрузка & operator+=
Посмотрите здесь:

C++ Перегрузка operator+
Перегрузка operator<< C++
C++ перегрузка operator<<
Перегрузка operator= C++
C++ Перегрузка operator[][][]
C++ Перегрузка operator->()
Перегрузка operator+ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 12:34     перегрузка & operator+= #2
C++
1
2
3
4
5
6
7
8
9
10
11
class Port
{
public:
    Port & operator += (int b)
    {
        a += b;
        return *this;
    }
 
    int a;
};
Добавлено через 47 секунд
Оператор суммы можно применять к различным типам и не только для суммы.

Добавлено через 1 минуту
Т.е. это может быть не только алгебраическое суммирование, а вообще всё что угодно.
morgan4ik
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
24.03.2011, 13:57     перегрузка & operator+= #3
подскажите как работает *this????буду благодарен
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
24.03.2011, 14:03     перегрузка & operator+= #4
Он никак не работает. Это просто указатель на экземпляр класса, членом которого он одновременно является (т.е. неявным членом класса является указатель на себя).
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 14:05     перегрузка & operator+= #5
C++
1
2
3
int * this = new int(5);
 
int b = *this;
Но this не int, а Port. В данном случае.

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
членом которого он одновременно является
Только членом класса он не является. А востальном, ага.
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
24.03.2011, 14:07     перегрузка & operator+= #6
Deviaphan, а чем он является?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 14:12     перегрузка & operator+= #7
Указатель this не существует, как член класса.
Пустой класс имеет нулевой размер, но имеет указатель this.

Добавлено через 1 минуту
this это адресс объекта. Если вдаваться во (множественное)наследование, то всё немного сложнее, но суть та же. Это адрес объекта.
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
24.03.2011, 14:20     перегрузка & operator+= #8
Deviaphan, да-да, извиняюсь, уже понял, что тупанул))) Он существует как реальная переменная только в методах, чтобы, собственно, они могли обращаться к конкретному экземпляру. Ещё раз извиняюсь.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 14:25     перегрузка & operator+= #9
*к данным-членам конкретного экземпляра
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
24.03.2011, 14:29     перегрузка & operator+= #10
Deviaphan, думал, это как-то само собой разумеется...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 14:32     перегрузка & operator+= #11
Я уточняю для тех, кто про this спрашивает. Для них не разумеется.)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 14:42     перегрузка & operator+=
Еще ссылки по теме:

Перегрузка operator-> () C++
C++ Перегрузка operator<()
C++ Перегрузка operator=
C++ Перегрузка operator T&
Перегрузка operator[] C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
24.03.2011, 14:42     перегрузка & operator+=
  #12

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Для них не разумеется
Логично)))

Yandex
Объявления
24.03.2011, 14:42     перегрузка & operator+=
Ответ Создать тему
Опции темы

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