#include <iostream>
using namespace std;
class Digit
{
private:
int m_digit;
public:
Digit(int digit = 0) : m_digit(digit) {}
//prefix
Digit & operator ++ ()
{
++m_digit;
return *this; // dereferencing this
}
// postfix -> parameter에 dummy로 하나 들어가면 postfix
// postfix는 return을 해준 다음에 값을 바꿔줘야함.
Digit operator ++ (int)
{
Digit temp(m_digit);
++(*this);
return temp;
}
friend std::ostream& operator << (std::ostream &out, const Digit &d)
{
out << Digit.m_digit;
return out;
}
};
int main()
{
Digit d(5);
cout << ++d << "\n"; // 6
cout << d++ << "\n"; // 6
cout << d << "\n"; // 7
return 0;
}