24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
|
||||||
1 | ||||||
operator+ как член класса14.08.2013, 20:15. Показов 3315. Ответов 42
Метки нет (Все метки)
Могу ли я сделать operator+ как член класса таким образом?
0
|
14.08.2013, 20:15 | |
Ответы с готовыми решениями:
42
Массив объектов класса как член другого класса Член-ссылка на другой член класса Как перенести operator из базового класса в производный? Предикат как член класса |
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
|
|
14.08.2013, 20:28 | 3 |
может я конечно и парю, давно читал про дружественные ф-ии, у дружественной ф-ии два аргумента. Первый вызывает, второй как аргумент.
0
|
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
|
|
14.08.2013, 20:42 | 4 |
0
|
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
|
|
14.08.2013, 20:45 [ТС] | 5 |
Kins, дружественные функции, насколько мне известно, не являются членами класса.
IGPIGP, т.е. я не могу сделать оператор, являющийся членом класса, принимающий два параметра? Получается, я уже не смогу написать c = a + b ? Придётся обязательно менять данные класса a?
0
|
Комп_Оратор)
|
|
14.08.2013, 20:51 | 6 |
Вы можете объявить дружественную функцию-оператор "+". Она примет 2 параметра (две константные ссылки, например) и вернёт ссылку. Но она не будет членом класса. В классе имеет смысл определить оператор "+=", если это нужно.
Ну или делайте с одним параметром, зачем именно с двумя?
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|||||||||||||||||||||
14.08.2013, 20:54 | 7 | ||||||||||||||||||||
1. как уже было сказано operator+ будет принимать только один параметр т.е.
0
|
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
|
|
14.08.2013, 20:57 | 8 |
0
|
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
|
||||||
14.08.2013, 21:02 [ТС] | 9 | |||||
Но членами класса не являются.
Хорошо, если нельзя обойтись при перегрузке оператора + без дружественных функций, можно ли объявить функцию add, например:
И не хотелось бы менять a и b в выражении c = a + b.
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
14.08.2013, 21:05 | 10 |
0
|
14.08.2013, 21:19 | 11 | ||||||||||
Оператор - член класса принимает только один параметр. Причина тому проста: второй параметр - ссылку на сам класс - он получает неявно. то есть кусок кода
1
|
Каратель
|
||||||
14.08.2013, 22:52 | 12 | |||||
ну так и делай оператор свободной функцией
гореть тебе в аду за такое
1
|
14.08.2013, 23:08 | 13 |
код плодит лишний экземпляр класса. Плюс, класс может не иметь такой конструктор, да и вообще какое-либо приравнивание. Плюс, нельзя унаследовать эту функцию, а вызывать только через касты. Говно, короче, а не предложение.
0
|
15.08.2013, 00:19 | 15 |
Важно, как... Плюс, я уже написал, что operator может использоваться для краткости записи совсем иных действий, нежели простое суммирование.
А что, машина Тьюринга не имеет права наследовать операторы? От детерменированой к недетерменированной? Что за расизм?!
0
|
Tulosba
|
15.08.2013, 12:32
#18
|
Не по теме: кстати, operator+ может быть еще и унарным. А чтобы не гореть в адах, надо функции-члены, которые не должны менять this, делать константными.
0
|
IGPIGP
|
|||||
15.08.2013, 14:54
#19
|
|||||
Не по теме: Tulosba, вопрос в постановке нерешаем даже за пределами класса. Все же ссылки и две const))
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
15.08.2013, 15:00 | 20 |
Вопрос решаем. Ответ: "нет"
Речь о модификации this функцией, которая модифицировать не должна. Не о явных аргументах речь, а о неявном. И что в этом случае хотелось бы получить?
0
|
15.08.2013, 15:00 | |
15.08.2013, 15:00 | |
Помогаю со студенческими работами здесь
20
Callback как член класса Массив как член класса Vector как член класса Ifstream& как член класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |