Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190

Использование функций-членов для перегрузки унарных операторов

19.09.2016, 12:07. Показов 1382. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые коллеги. Возник вопрос.
как работают эти строки?
C++
1
2
three_d operator+(three_d op2);// оператор ор1 передается неявно.
three_d operator=(three_d op2);// оператор ор1 передается неявно.
и объясните пожалуйста как работает перегрузка операторов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
three_d three_d::operator+(three_d op2)
{
    three_d temp;
 
    temp.x = x+op2.x;//операции сложения целочисленных
    temp.y = y+op2.y;//значений сохраняют оригинальный
    temp.z = z+op2.z;//смысл
    return temp;
}
 
three_d three_d::operator=(three_d op2) 
{
    x = op2.x;//операции сложения целочисленных
    y = op2.y;//значений сохраняют оригинальный
    z = op2.z;//смысл
    return *this;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
using namespace std;
 
class three_d
{
int x,y,z; //3-х мерные координаты
 
public:
three_d () {x=y=z=0;}
three_d (int i, int j, int k) {x=i;y=j;z=k;}
 
three_d operator+(three_d op2);// оператор ор1 передается неявно.
three_d operator=(three_d op2);// оператор ор1 передается неявно.
 
three_d operator++ ();//префиксная версия
three_d operator++ (int notused);//постфиксная версия
 
void show();
};
 
three_d three_d::operator+(three_d op2)
{
three_d temp;
 
temp.x = x+op2.x;//операции сложения целочисленных
temp.y = y+op2.y;//значений сохраняют оригинальный
temp.z = z+op2.z;//смысл
return temp;
}
 
three_d three_d::operator=(three_d op2) 
{
x = op2.x;//операции сложения целочисленных
y = op2.y;//значений сохраняют оригинальный
z = op2.z;//смысл
return *this;
}
 
three_d three_d::operator++()
{
x++;//инкремент координант x, y, z;
y++;
z++;
return *this;
}
 
three_d three_d::operator++(int notused)
{
three_d temp=*this;
x++;//инкремент координант x, y, z;
y++;
z++;
return temp;//возврад исходного значения
}
 
void three_d::show()
{
cout << x <<", ";
cout << y <<", ";
cout << z <<"\n";
}
 
int main()
{
three_d a(1,2,3),b(10,10,10),c;
a.show();
b.show();
 
c = a+b;
c.show();
 
c=a+b+c;
c.show();
 
c=b=a;
c.show();
b.show();
 
++c;
c.show();
 
c++;
c.show();
 
a=++c;
a.show();
c.show();
 
a=c++;
a.show();
c.show();
 
return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2016, 12:07
Ответы с готовыми решениями:

Использование перегрузки операторов для комплексного числа
Перезагрузить функции для разных типов входных данных, или создать шаблоны функций, или переопределить операции для указанных пользователем...

Сколько используется параметров при перегрузке унарных операторов как френд-функций?
Вопрос следующий интересует: При перегрузке унарных операторов как френд-функций сколько используется параметров? Также при перегрузке...

Использование унарных операций для двух переменных
так как я изучаю с++, а за голову взялся поздно, естественно в нем не сильно понимаю, но что же поделать, в технаре практика и нужно решить...

5
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.09.2016, 14:33
А что не понятно-то?
0
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
19.09.2016, 15:18  [ТС]
nmcf, как оператор ор1 передается неявно
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.09.2016, 16:54
Лучший ответ Сообщение было отмечено MRG_Serejka как решение

Решение

Ну ты в выражении пишешь (a + b), оператор будет вызван для левого операнда-объекта (a), что-то типа
C++
1
a.add(b)
Соответственно поля a доступны в операторе как в обычной функции-члене.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
19.09.2016, 17:01
MRG_Serejka, он передается скрытым параметром this
0
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
19.09.2016, 17:52  [ТС]
nmcf, Спасибо огромное , очень понятно разъяснил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2016, 17:52
Помогаю со студенческими работами здесь

Перегрузка операторов с использованием функций-членов и укозателя *this
Из учебника я узнал, то что функция перегрузки операторов вызывается когда компилятор встретит выражение - c = a + b; затем b - передается...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Перегрузки операторов для класса Array
Здравствуйте.Помогите разобраться с перегрузками,пожалуйста. Перегрузки: 1)операции ++ (– –): одновременно увеличивает (уменьшает)...

Перегрузка унарных операторов
Здравствуйте! В книге Шилдта С++ Базовый курс много примеров по перегрузке операторов. По одному из них у меня вопрос. Перегружаем...

Все перегрузки операторов +-/*=<< >>[] для динамического класса
Нужно реализовать Все перегрузки операторов +-/*=&lt;&lt; &gt;&gt; для динамического класса + конкатенация массива class smart_arr { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru