在C++中进行操作符重载的时候,前置++返回的是一个引用。
这就设计到了对于基本变量进行前置操作时候的理解了。
例如,对于int类型变量,在进行前置++的时候,是会将i进行加1,然后返回i的引用。而i++是先创建一个i的副本,然后在对i进行加1,最后返回i的副本的值(注意这里是值而不是引用)。
通常,c++的内置类型都要求前缀式操作符返回被增量或被减量对象的引用;
而要求后缀式操作符返回被增量活被减量对象做增或减操作之前的副本(这里边就存在内存拷贝,这就涉及到了效率的因素)
因此,在进行自定类的操作符重载的时候,也是类似的要求,那就是前置++返回的是对应的引用,而后置++返回的操作之前的一个副本值(而不是引用,这个应该是一个临时的变量,之后就会被析构掉了吧,我觉得!)
其实,在实现后缀式版本时,一般先保存对象做自增/减之前的副本,然后调用自己的前缀版本来实现自增操作,最后将先前年保留的副本
返回。这里需要注意的是,后缀式版本中,返回值是尚未自增的原值,但对象本身已经做了自增操作了。
总结来讲:就是后缀操作符,中间会有一个临时变量来保存没有更改之前的值,最后返回的是这个临时变量(也就是那个副本)
原文地址:http://www.cnblogs.com/andyniu/p/7821325.html