0417087

练习4.17:说明前置递增运算符和后置递增运算符的区别。

【出题思路】

C++实现了两种递增(递减)运算符:即前置版本和后置版本,二者的工作机理有所区别,一般来说前置版本是更好的选择。

【解答】

递增和递减运算符有两种形式:前置版本和后置版本。前置版本首先将运算对象加1(或减1),然后把改变后的对象作为求值结果。后置版本也将运算对象加1(或减1),但是求值结果是运算对象改变之前那个值的副本。这两种运算符必须作用于左值运算对象。前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

我们的建议是,除非必须,否则不用递增(递减)运算符的后置版本。前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回改变了的运算对象。

与之相比,后置版本需要将原始值存储下来以便于返回这个未修改的内容,返回的是一个临时值,自然不能用做左值。如果我们不需要修改之前的值,那么后置版本的操作就是一种浪费。

对于整数和指针类型来说,编译器可能对这种额外的工作进行了一定的优化;但是对于相对复杂的迭代器类型来说,这种额外的工作就消耗巨大了。建议养成使用前置版本的习惯,这样不仅不需要担心性能问题,而且更重要的是写出的代码会更符合编程人员的初衷。

本页共20段,615个字符,1645 Byte(字节)