Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

постфиксная форма оператора++

7.8K
20 октября 2004 года
prankish_man
5 / / 09.10.2004
Такой вопрос: как перегрузить постфиксную форму оператора ++? Если объявить его как функцию класса без параметров, то это получается перегрузка префиксной формы. Седьмая студия при попытке в таком случае использовать постфиксную форму говорит, что формы такой не нашла и использует префиксную. Стало быть, вопросов два:
1. какой синтаксис перегрузки постфиксной формы
2. как корректно ее перегрузить (чтобы возвращала ссылку на неизмененный экземпляр класса).
3
20 октября 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by prankish_man
Такой вопрос: как перегрузить постфиксную форму оператора ++? Если объявить его как функцию класса без параметров, то это получается перегрузка префиксной формы. Седьмая студия при попытке в таком случае использовать постфиксную форму говорит, что формы такой не нашла и использует префиксную. Стало быть, вопросов два:
1. какой синтаксис перегрузки постфиксной формы
2. как корректно ее перегрузить (чтобы возвращала ссылку на неизмененный экземпляр класса).


Код:
struct A
{
  A& operator ++() // префиксная форма
  {
     A a = *this;
     ............
     return a; // возвращаем неизмененное значение
  }

  A& operator ++(int) // постфиксная форма
  {
    return ++(*this);
  }
};
7.8K
20 октября 2004 года
prankish_man
5 / / 09.10.2004
Цитата:
Originally posted by Green

Код:
struct A
{
  A& operator ++() // префиксная форма
  {
     A a = *this;
     ............
     return a; // возвращаем неизмененное значение
  }

  A& operator ++(int) // постфиксная форма
  {
    return ++(*this);
  }
};


я сам уже разобрался, спасибо.
Кстати, это код некорректный -- правильный пример такой:

 
Код:
A operator ++(int) // постфиксная форма
  {
    A T = *this;
    ++(*this);
    return T;
  }
3
21 октября 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by prankish_man

я сам уже разобрался, спасибо.
Кстати, это код некорректный -- правильный пример такой:
 
Код:
A operator ++(int) // постфиксная форма
  {
    A T = *this;
    ++(*this);
    return T;
  }



Ну тогда уж, чтоб совсем быть правильным:

Код:
A& operator ++() // префиксная форма
{
 .............
  return *this;
}

A operator ++(int) // постфиксная форма
{
  A a = *this;
  ++(*this);
  return a; // возвращаем неизмененное значение
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог