Can we overload operator++
for pre-increment and post-increment? i.e. calling SampleObject++
and ++SampleObject
gives the correct results.
class CSample {
public:
int m_iValue; // just to directly fetch inside main()
CSample() : m_iValue(0) {}
CSample(int val) : m_iValue(val) {}
// Overloading ++ for Pre-Increment
int /*CSample& */ operator++() { // can also adopt to return CSample&
++(*this).m_iValue;
return m_iValue; /*(*this); */
}
// Overloading ++ for Post-Increment
/* int operator++() {
CSample temp = *this;
++(*this).m_iValue;
return temp.m_iValue; /* temp; */
} */
};
We can't overload a function based only on return type, and also even if we take it as permitted, it doesn't solve the problem because of the ambiguity in overload resolution.
Since operator overloading is provided to make built-in types behave like user-defined types, why can't we avail of both pre and post increment for our own types at the same time?