Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 20:33   #11
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

тут опечатка
Код:
A& operator++(int)
надо так
Цитата:
A operator++(int)
и попробуйте что получится в этих случаях

Код:
   A ob1,ob2;
          ob1=++ob2;
и
Код:
ob1=ob2++;
counter вне форума Ответить с цитированием
Старый 16.05.2009, 20:44   #12
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Sazary, Ваш вариант постфиксного оператора вернёт значение как префиксный вариант, что не есть правильно.
counter, Ваш вариант для тяжеловесных объектов "красив" будет, т.к. 2 временных объекта создадутся в операторе, но зато значение нужное вернёт
ЗЫ. Как сделать лучше я не знаю, но вариант counter'a предпочтительнее из-за корректности результата
pu4koff вне форума Ответить с цитированием
Старый 16.05.2009, 20:45   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

counter, да, действительно, не заметил.
Но тогда достаточно вот так написать:
Код:
 A operator++(int)
   {
     P++;
     return *this;
   }
pu4koff, а так пойдет?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 20:47   #14
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
pu4koff, а так пойдет?
Неа. P++ изменяет состояние объекта и в return копируется уже измененный объект.
pu4koff вне форума Ответить с цитированием
Старый 16.05.2009, 20:51   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Действительно.. Как-то нехорошо получается..
Выходит, для постфиксной формы обязательно создавать локальный объект?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 20:55   #16
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Действительно.. Как-то нехорошо получается..
Выходит, для постфиксной формы обязательно создавать локальный объект?
Да. Поэтому рекомендуется приучаться писать for (...; ...; ++i) и т.д. а не i++; Для int и других простых типов это не критично, но мало ли чем может это i может потом оказаться. А если в цикле объекты тяжелые так инкрементировать, то серьёзные потери в скорости могут возникнуть
pu4koff вне форума Ответить с цитированием
Старый 16.05.2009, 20:58   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от pu4koff
Да. Поэтому рекомендуется приучаться писать for (...; ...; ++i) и т.д. а не i++; Для int и других простых типов это не критично, но мало ли чем может это i может потом оказаться. А если в цикле объекты тяжелые так инкрементировать, то серьёзные потери в скорости могут возникнуть
Чтож, главное вовремя заполнить пробел Буду знать. Всем спасибо )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.01.2013, 16:17   #18
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Здравствуйте форумчане. Наткнулся на эту тему, и что бы не плодить еще одну решил здесь задать вопрос схожий чем то с данной темой.

Вопрос относительно возвращаемого значения после перегрузки оператора operator++.

Есть подобный код, гипотетический который содержится в таком же гипотетическом классе class:
Код:
class &operator++()
{
    class *var = new class;
    return *var;
}
Точно не уверен в корректности кода, но факт в том что если его использовать в следующем контексте:

Код:
class m;
m++;
Ссылки на m и после операции m++ будут ли они одинаковые или все таки разные?
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator= для NULL Selebro Общие вопросы C/C++ 2 14.12.2008 16:29
Operator C++ EfiopianDIMON Общие вопросы C/C++ 1 13.12.2008 16:52
ошибка - [Error] Unit1.pas(325): Operator not applicable to this operand type blackstersl Общие вопросы Delphi 6 27.08.2008 13:17
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38