我们能否重载前缀和后缀的
我们不能仅基于返回类型来重载函数,即使我们将其视为允许的,也无法解决重载分辨率中的歧义问题。
由于运算符重载是提供给内置类型以表现为用户定义类型的,为什么我们不能同时使用自增和后自增来操作我们自己的类型呢?
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; */
} */
};
我们不能仅基于返回类型来重载函数,即使我们将其视为允许的,也无法解决重载分辨率中的歧义问题。
由于运算符重载是提供给内置类型以表现为用户定义类型的,为什么我们不能同时使用自增和后自增来操作我们自己的类型呢?