Из http://www.learncpp.com/cpp-tutorial/97-overloading-the-increment-and-decrement-operators/реализации префикса оператора ++
декларации класса
class Digit
{
private:
int m_nDigit;
public:
Digit(int nDigit=0)
{
m_nDigit = nDigit;
}
Digit& operator++();
Digit& operator--();
int GetDigit() const { return m_nDigit; }
};
Их реализация operator++
Digit& Digit::operator++()
{
// If our number is already at 9, wrap around to 0
if (m_nDigit == 9)
m_nDigit = 0;
// otherwise just increment to next number
else
++m_nDigit;
return *this;
}
Мой альтернативной реализации operator++
Digit& Digit::operator++()
{
return Digit(m_nDigit == 9 ? 0 : (m_nDigit + 1));
}
Я хотел бы знать
- , если есть какие-либо недостатки создания нового объекта, как я сделал, и
- о том, как выбрать одну из этих реализаций?
Ваша альтернативная реализация выглядит так, будто ей не хватает '='. –
@CarlNorum: исправлено, извините, что goofup. – Lazer