7 / 7 / 1
Регистрация: 18.12.2009
Сообщений: 34
|
||||||
1 | ||||||
Перегрузка бинарного оператора31.05.2010, 16:31. Показов 9701. Ответов 9
Метки нет (Все метки)
Хочу чтобы в моей программе знак "%" работал, как знак операция сложения действительных чисел "+". Где ошибка
0
|
31.05.2010, 16:31 | |
Ответы с готовыми решениями:
9
Перегрузка бинарного оператора + Перегрузка бинарного оператора Перегрузка бинарного оператора + Перегрузка бинарного оператора << в template классе |
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
31.05.2010, 16:40 | 2 |
FiXeR, беда в том, что оператор %(int, int) и так существует. И перегрузить его не изменив передаваемые параметры не получится. Если так сильно хочется, можно свой класс создать, и в нём открытый статический метод такой сделать. Только вызываться это чудо как-то странно будет. Да и зачем Вам оно?..
1
|
7 / 7 / 1
Регистрация: 18.12.2009
Сообщений: 34
|
|
31.05.2010, 17:06 [ТС] | 3 |
Мне надо понять как перегрузить оператор, вы предлагаете зделать методом, как это будет выглядеть, если можно покажите на коде.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
31.05.2010, 17:30 | 4 | |||||
FiXeR, можно вот так например сделать:
Код
$ ./overload_percent a = 2; b = 2 a % b = 4
2
|
0 / 0 / 0
Регистрация: 17.06.2012
Сообщений: 17
|
||||||
18.12.2012, 23:16 | 5 | |||||
В предыдущем коде меня интересует 9-тая строка, а именно
Я знаю, что без него программа работать не будет. Я хочу знать, согласно какого правила так надо писать. Тыкните меня носом, пожалуйста.
0
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||||||
18.12.2012, 23:23 | 6 | |||||
Serhiy_UA, может так
1
|
0 / 0 / 0
Регистрация: 17.06.2012
Сообщений: 17
|
||||||
19.12.2012, 00:03 | 7 | |||||
go,
хочу обратить ваше внимание на код от easybudda. Там есть метод
Согласно какого правила там нужно ставить слово const?
0
|
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
|
|
19.12.2012, 00:12 | 8 |
Слово const после круглых скобок в объявление(определение ) функции, означает, что эти функции не изменяют состояния класса.
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
19.12.2012, 03:07 | 9 |
Посмотрите, как передаются параметры в функции в 13 и 18 строке - как ссылки на константные объекты. Компилятор не проверяет, что на самом деле происходит внутри методов класса при вызове их из функции, но раз уж переданный по ссылке объект класса не должен изменяться, должна быть гарантия, что вызываемые внутри функции методы не изменят сам объект. Что, как уже верно заметили, и достигается объявлением метода, как константного. В качестве эксперимента попробуйте внутри константного метода как-нибудь изменить переменную, значение которой он возвращает. Оно, конечно, снова не скомпилируется (не должно бы по крайней мере), но прочитать сообщение об ошибке в этом случае тоже будет полезно...
1
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
19.12.2012, 14:19 | 10 |
Угу, только вот поля помеченные как mutable могут меняться. А вообще он написан для константных объектов. Уберите слово const и увидите error`ы.
1
|
19.12.2012, 14:19 | |
19.12.2012, 14:19 | |
Помогаю со студенческими работами здесь
10
Определение класса, описывающего комплексное число. Перегрузка для него бинарного оператора "*" Ошибка в использовании бинарного оператора Перегрузка бинарного плюса Переопределение БИНАРНОГО оператора внутри класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |