struct A
{
A& operator ++() // префиксная форма
{
A a = *this;
............
return a; // возвращаем неизмененное значение
}
A& operator ++(int) // постфиксная форма
{
return ++(*this);
}
};
постфиксная форма оператора++
1. какой синтаксис перегрузки постфиксной формы
2. как корректно ее перегрузить (чтобы возвращала ссылку на неизмененный экземпляр класса).
Цитата:
Originally posted by prankish_man
Такой вопрос: как перегрузить постфиксную форму оператора ++? Если объявить его как функцию класса без параметров, то это получается перегрузка префиксной формы. Седьмая студия при попытке в таком случае использовать постфиксную форму говорит, что формы такой не нашла и использует префиксную. Стало быть, вопросов два:
1. какой синтаксис перегрузки постфиксной формы
2. как корректно ее перегрузить (чтобы возвращала ссылку на неизмененный экземпляр класса).
Такой вопрос: как перегрузить постфиксную форму оператора ++? Если объявить его как функцию класса без параметров, то это получается перегрузка префиксной формы. Седьмая студия при попытке в таком случае использовать постфиксную форму говорит, что формы такой не нашла и использует префиксную. Стало быть, вопросов два:
1. какой синтаксис перегрузки постфиксной формы
2. как корректно ее перегрузить (чтобы возвращала ссылку на неизмененный экземпляр класса).
Код:
Цитата:
Originally posted by Green
Код:
struct A
{
A& operator ++() // префиксная форма
{
A a = *this;
............
return a; // возвращаем неизмененное значение
}
A& operator ++(int) // постфиксная форма
{
return ++(*this);
}
};
{
A& operator ++() // префиксная форма
{
A a = *this;
............
return a; // возвращаем неизмененное значение
}
A& operator ++(int) // постфиксная форма
{
return ++(*this);
}
};
я сам уже разобрался, спасибо.
Кстати, это код некорректный -- правильный пример такой:
Код:
A operator ++(int) // постфиксная форма
{
A T = *this;
++(*this);
return T;
}
{
A T = *this;
++(*this);
return T;
}
Цитата:
Originally posted by prankish_man
я сам уже разобрался, спасибо.
Кстати, это код некорректный -- правильный пример такой:
я сам уже разобрался, спасибо.
Кстати, это код некорректный -- правильный пример такой:
Код:
A operator ++(int) // постфиксная форма
{
A T = *this;
++(*this);
return T;
}
{
A T = *this;
++(*this);
return T;
}
Ну тогда уж, чтоб совсем быть правильным:
Код:
A& operator ++() // префиксная форма
{
.............
return *this;
}
A operator ++(int) // постфиксная форма
{
A a = *this;
++(*this);
return a; // возвращаем неизмененное значение
}
{
.............
return *this;
}
A operator ++(int) // постфиксная форма
{
A a = *this;
++(*this);
return a; // возвращаем неизмененное значение
}