我们可以超载operator++
前增量和后增量吗?即调用SampleObject++
并++SampleObject
给出正确的结果。
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; */
} */
};
我们不能只根据返回类型重载一个函数,而且即使我们认为它是允许的,由于重载决策的模糊性,它也不能解决问题。
既然提供了运算符重载来使内置类型表现得像用户定义的类型,为什么我们不能同时为我们自己的类型使用前置和后置增量呢?