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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2013, 10:32   #1
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию Перегрузка операторов.

Почему не работает программа с префиксной перегрузкой операторов.?
Код:
using namespace std;
class Counter
{
    int isval;
public:
    Counter();

    ~Counter(){cout<<"Разрушение объекта.";}
    int show(){return isval;}
    void sets(int j){isval=j;}
    void increment(){isval++;}
    void operator++(){ ++isval;}
    Counter& operator++();
};
Counter::Counter():

    isval(0)
    {}


Counter& Counter::operator++()
 {


     ++isval;
     return *this;
 }

   int main()
{
setlocale(LC_CTYPE,"Russian");
   Counter i;
   cout<<"Значение i равно :"<<i.show()<<endl;
i.increment();
   cout<<" Значение перегруженного объекта:"<<i.show()<<endl;
   ++i;
   cout<<"Ещё одно перегруженное значение:"<<i.show()<<endl;
 Counter a = ++i;
 cout<<"Значение объекта а равно :"<<a.show()<<endl;
   return 0;

 }
Если добавить тип int
Код:
Counter& operator++(int );
то работает, но ведь это уже будет постфиксная перегрузка
Gtnz8 вне форума Ответить с цитированием
Старый 01.08.2013, 12:10   #2
Dima-War
Форумчанин
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию

http://programmery.ucoz.ru/publ/c/pe...enta/4-1-0-143

Фиктивный параметр int никогда не используется, а лишь служит признаком того, что функция вызывается для выполнения операции ++ или -- в постфиксном варианте.
Dima-War вне форума Ответить с цитированием
Старый 01.08.2013, 15:51   #3
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию

Ваш код у меня вообще не компилируется.
Проблема очевидно в этом:
Код:
void operator++();
    Counter& operator++();
какую из функций вызвать компилятор не знает
denrubun вне форума Ответить с цитированием
Старый 01.08.2013, 16:26   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от denrubun Посмотреть сообщение
Ваш код у меня вообще не компилируется.
Проблема очевидно в этом:
Код:
void operator++();
    Counter& operator++();
какую из функций вызвать компилятор не знает
Конечно не знает, две вышеприведенные формы отличаются только сигнатурой возвращаемого значения.

В ссылке, которую вам привели, все подробно описано.
Counter& operator++();
Igor95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов three_cats Общие вопросы C/C++ 2 24.02.2013 15:07
перегрузка операторов Игорь_С Общие вопросы C/C++ 1 16.11.2012 11:11
Перегрузка операторов(С++) Aero93 Помощь студентам 1 18.04.2012 17:00
Перегрузка операторов _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 11 20.11.2010 13:23
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15