递增操作符的重载
前置递增:比如 ++i:先对 i 进行加一操作,i++:返回的是 i 自增之前的值
++i 的返回是可修改值,然而 i++ 的返回是不可以修改的值。
(1)(i++)++ ; 编译错误
(2)(++i)++ ; 编译通过
重载代码实现:
1 |
|
前置后置的区别
返回值
前置递增返回的是操作对象自身,所以返回值类型是引用。
后置递增返回的是局部对象,并且因为c++自身实现的后置递增运算
i++
是不可修改的,所以返回值是 const 对象,否则像(i++)++
这样的代码是可以通过编译的,让人误以为真的可以实现递增两次,实际上是不可以的,第一次递增作用在自身,第二次是作用在返回的临时对象上。效率
后置递增相比前置递增而言,增加了一个临时对象的创建,就会多出构造和析构的开销,效率便不如前置递增。