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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Артем Смирнов
6 / 6 / 1
Регистрация: 15.05.2012
Сообщений: 40
17.10.2012, 19:11     Перегрузка унарных операторов #1
Здравствуйте! В книге Шилдта С++ Базовый курс много примеров по перегрузке операторов. По одному из них у меня вопрос. Перегружаем префиксную форму оператора инкремента:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class three_d {
     int x,y,z; // трехмерные координаты
public:
     three_d(int i, int j, int k) { x=i; y=j; z=k; }
     //......
     three_d operator++ (); // префиксную
} ;
//......
// Перегруженная версия оператора ++ (префиксная)
three_d threed_d::operator++()
{  
     x++;
     y++;
     z++;
     return *this;
}
У меня возник следующий вопрос: почему для перегрузки префиксной формы инкремента ,мы использовали постфиксную форму инкрементирования этих координат, заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 19:11     Перегрузка унарных операторов
Посмотрите здесь:

Перегрузка операторов C++
C++ Перегрузка операторов
[C++] Перегрузка операторов C++
Перегрузка операторов С++ C++
C++ Перегрузка операторов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
17.10.2012, 19:16     Перегрузка унарных операторов #2
Да тут особой разницы нет, просто автору так больше нравится, видимо.
Артем Смирнов
6 / 6 / 1
Регистрация: 15.05.2012
Сообщений: 40
17.10.2012, 19:22  [ТС]     Перегрузка унарных операторов #3
Ммм, а вот я учил что если оператор постфиксный , то ведь сначала используют в выражениях его старое значение, а только потом инкрементируют, я думал что в примере, перегруженный оператор возвратит старое значение координат (а хотя оператор префиксный!)
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
17.10.2012, 19:29     Перегрузка унарных операторов #4
В данном примере без разницы.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.10.2012, 19:38     Перегрузка унарных операторов #5
Артем Смирнов, в случае переменной разницы никакой, был бы, например, массив, то это уже другое дело:
i=0;
a[++i]=3; //a[1]=3
a[i++]=3; //a[0]=3
Артем Смирнов
6 / 6 / 1
Регистрация: 15.05.2012
Сообщений: 40
17.10.2012, 19:40  [ТС]     Перегрузка унарных операторов #6
Все понятно! Всем ответившим большое спасибо!
Yandex
Объявления
17.10.2012, 19:40     Перегрузка унарных операторов
Ответ Создать тему
Опции темы

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