本文主要是介绍【More Effective C++】条款6:区分前置++和后置++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前置++:返回引用原因:
- 保证和内建类型一致,++++i,是合法的
后置++:返回一个const值的原因
- 避免连加操作,因为i++++是不合法的,和内建类型不一致;
- 避免混淆,因为第二个++是对第一个++返回对象的操作,i只被累加了一次。
注意:
- 参数后置++中参数只起到标识作用,不需要具体的命名参数,可以避免不必要的警告;
- 后置++会导致临时对象的产生,所以自建类型应该尽量使用前置++;
- 为了减少维护成本,可以用前置++实现后置++,改动的时候只需要改动一个函数即可。
class UPInt {
public:UPInt& operator++() {*this += 1;return *this;}const UPInt operator++(int) {UPInt oldValue = *this;++(*this);return oldValue;}
}UPInt i;
++i; // 调用 i.operator++()
i++; // 调用 i.operator++(0)
这篇关于【More Effective C++】条款6:区分前置++和后置++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!