crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> пергрузка operator+ и operator+=
Litkevich Yuriy
  опции профиля:
сообщение 21.4.2010, 12:48
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Дошла очередь до освоения перегрузки этих операторов:
operator+=
operator+


В книге Герберта Шилдта по С++, обе эти оператора объявляются и реализуются, как члены класса. А вот у тролей почему-то operator+ повсеместно используется как связанный не-член класса (т.е. описан просто в этом же заголовочнике), ну и соответственно он имеет два аргумента, а не один.

Пример:
Связанный не-член класса
const QString operator+ ( const QString & s1, const QString & s2 )

член класса
QString & operator+= ( const QString & other )


Как же правильнее поступать? Делать operator+ членом класса или связанным не-членом

П.С. ещё я не понял, почему троли для operator+ возвращают константный объект, ведб тогда нельзя будет использовать запись типа:
obj1 + obj2 + obj3 + ...

тут пардон, перепутал с operator= и конструкцией вида obj1 = obj2 = obj3

Я планировал сделать такой перегруженный оператор:
Type &operator+ ( const Type & s1, const Type & s2 )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 22.4.2010, 14:13
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Litkevich Yuriy @ 22.4.2010, 14:35) *
а в таком случае, где они должны быть объявлены? Я пока вижу в разных примерах, что они объявлены в том же заголовочнике что и сам класс, только "под ним"

да, всё правильно. там они и должны объявляться. и включать все заголовочники на классы, которые в них используются. но на этапе линковки неиспользуемые функции отбросятся. а если засунуть методы внутрь класса, то тогда придётся ещё и линковать всё, что к классу относится, с твоей библиотекой. впрочем, это существенно только если предполагается многократное использование класса в разных программах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.4.2010, 15:06
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


На мой взгляд, уже на таком профессиональном уровне, что ты, книгу Шилдта не стоит использовать (даже на уровне справочника). Лучше уже Страуструпом пользоваться. Так по его книге говорится, что операторы +, - и их варианты лучше делать не-членами класс, а вот += -= членами класса.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 4:14