1 区分前置和后置 ++/--
以++为例
cpp
前置++
UPInt& UPInt::operator++()
{
*this += 1;
return *this;
}
后置++
const UPInt UPInt::operator++(int)
{
UPInt oldValue = *this;
++(*this);
return oldValue;
}
可见后置操作额外生成了一个临时对象。
并且为了避免形如i++++(即使合法,也只会累加一次。++++i和嘎合法),这样的写法,后置++为返回值加上了const,会导致i++++错误,来避免上述写法。
2 不要重载&&,||和,操作符
2.1 "骤死式"语句
比如if语句中的 && 和 ||,保证了从左到右的执行顺序,并且当&&出现了false,其余的函数不执行并且直接返回判断。||出现了true也有一样的效果。
如果重载了&&和||,骤死式语句的特性将消失。
2.2 ,操作符
,的执行逻辑是,先执行,左侧,再执行逗号右侧,最后返回右侧的值。如果重载,无法保证左右执行顺序。