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

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

Войти
Регистрация
Восстановить пароль
 
Native
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 11
#1

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

03.02.2011, 12:02. Просмотров 493. Ответов 3
Метки нет (Все метки)

Я новичек в С++, столкнулась с перегрузкой операторов. Подскажите пожалуйста
в чем принципиальное отличие таких обьявлений:
Имя_класса& operator+(Имя_класса& , Имя_класса& )
и такого: Имя_класса operator+(Имя_класса& , Имя_класса& )?
Почему в некоторых случаях передается ссылка на оператор?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2011, 12:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов (C++):

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this - C++
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в зависимости от чего зависит агрумент при...

Перегрузка операторов - C++
Доброго времени суток! Столкнулся с такой проблемой, перегрузка операторов. Имею работающий код, но не смог сделать по своему заданию. ...

Перегрузка операторов - C++
В общем задание следующее: Создайте класс chess (шахматы), в котором хранятся поля шахматной доски x, y (целые числа, лежащие в диапазоне...

Перегрузка операторов - C++
Решите пожалуйсто задачу: Разработайте программу, в которой реализована перегрузка оператора «^». Оператор «^» должен возводить...

[c++] Перегрузка операторов - C++
Не работает. #include <conio.h> #include <iostream.h> #pragma argsused struct FazzyNumber { double x; double x1,x2; ...

C++ перегрузка операторов - C++
люди такая ситуация кто может в краце объясните перегрузку операторов мне например надо перегрузить оператор умножения что бы умножить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
03.02.2011, 13:14 #2
Native, у тебя не правильно написано
и по ссылке не "передается оператор", а возвращается значение по сслыке.
например когда перегружаешь = надо чтобы менялся объект, для которого вызывается оператор
поэтому надо писать
C++
1
const ob& operator= (const ob& copyOb);
или для []
C++
1
ob& operator[] (const SomeType& copyOb);
1
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.02.2011, 13:55 #3
Native, при сложении ссылку возвратить не получится (в большинстве случаев, если действительно у вас операция "+" будет означать сложение), поскольку зачастую чтобы сложить два объекта, нужно создать временный объект, в который положится сумма этих двух переданных объектов. Поскольку объект создан внутри функции, т.е. является локальным, ссылку на него возвратить нельзя (ведь по выходу из функции он будет уничтожен), поэтому нужно возвращать значение, т.е. при выходе сначала объект будет скопирован в место вызова функции, а затем уничтожен.
А вот += может возвращать и ссылку, потому как результатом операции будет уже существующий объект, находящийся слева от += (т.е. по сути *this), вот ссылку на него и надо возвращать.
2
Native
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 11
03.02.2011, 23:11  [ТС] #4
Спасибо огромное! Извините за некорректность вопроса
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2011, 23:11
Привет! Вот еще темы с ответами:

перегрузка операторов - C++
Всем привет. Дошел до темы перегрузки операторов и возникло два вопроса. Первый: Чем отличается вот этот код String ...

Перегрузка операторов - C++
В общем учу эту тему и ввожу код один в один как в уроке, но в уроке он компилится, а у меня нет. Ругается на "c1++;", подскажите...

Перегрузка операторов - C++
Создайте класс Fraction (обыкновенная дробь), в котором реализовать перегрузку: оператора суммирования дробей, оператора суммирования дроби...

Перегрузка операторов ++ - C++
доброго времени суток. есть утечка памяти как я понимаю, но не мойму почему. о чем программа: есть обьект типа MString. В этом классе...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.02.2011, 23:11
Ответ Создать тему
Опции темы

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