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

Переопределение БИНАРНОГО оператора внутри класса - C++

Восстановить пароль Регистрация
 
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.09.2012, 05:41     Переопределение БИНАРНОГО оператора внутри класса #1
Подскажите как правильно переопределить оператор + для сласса chislo.

C++
1
2
3
4
5
class chislo
{
int val;
chislo chislo::operator +(const chislo &a, const chislo &b);
};
Пишет мне ошибку: Слишком много параметров для вызова данной функции. Что не так? (задача допусти сложить 2 э-та класса число и присвоить значение третьему э-ту класса число (типо с = а + б) при это а,б,с - элементы класса число.)

Понимаю что задача тупая и делается без переопределения, мне просто нужно понять принцип. Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 05:41     Переопределение БИНАРНОГО оператора внутри класса
Посмотрите здесь:

Переопределение оператора== C++
C++ Переопределение оператора присваивания
Переопределение оператора в классе C++
C++ Переопределение оператора
переопределение оператора <<, класса ofstream C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ProNoooob
71 / 71 / 6
Регистрация: 14.10.2009
Сообщений: 121
30.09.2012, 06:05     Переопределение БИНАРНОГО оператора внутри класса #2
Цитата Сообщение от !Андрей! Посмотреть сообщение
class chislo
{
int val;
chislo operator +(const chislo &a)
{
return chislo(val + a.val);
}
};
Оператор принимает два аргумента.
1) this
2) ссылку на объект справа.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
30.09.2012, 06:32     Переопределение БИНАРНОГО оператора внутри класса #3
operator+() рекомендуется делать френдом, поэтому вот будет правильно
C++
1
friend chislo operator +(const chislo &a, const chislo &b);
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.09.2012, 11:10  [ТС]     Переопределение БИНАРНОГО оператора внутри класса #4
Спасибо большое!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.10.2012, 14:14     Переопределение БИНАРНОГО оператора внутри класса #5
Kastaneda, не сказал бы, что это верно. Скорее, логическая цепочка такая: всегда стоит сохранять полноту, поэтому если пишется оператор +, то стоит написать также оператор +=. Оператор += лучше сделать членом соответствующего класса. Оператор + же лучше писать через оператор +=. Тогда ни на одном уровне этих размышлений не будет нарушена инкапсуляция, и в то же время сохранится полнота набора операций.
Yandex
Объявления
02.10.2012, 14:14     Переопределение БИНАРНОГО оператора внутри класса
Ответ Создать тему
Опции темы

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