leo_tj 2004-4-16 16:40
<open>c++ 为什么前置的递增要用到引用,而后之不用呢?(课本121页)
谢谢
omale 2004-4-16 17:01
Re:<open>c++ 为什么前置的递增要用到引用,而后之不用呢?(课本121页)
没有你们的课本。。。
是essential C++还是Thinking in C++
chen15959 2004-4-16 17:47
Re:<open>c++ 为什么前置的递增要用到引用,而后之不用呢?(课本121页)
可以这样理解:
前置++是先加后返回,就是在使用它的返回值的时候已经加过了。为了减少开销,返回引用就可以;
后置++是先返回后加,在使用它的返回值时还没有加过。实际上创建了一个副本,返回的是这个副本,所以没有使用引用。
OwnWaterloo 2008-10-8 04:47
理由真的非常简单
因为C是这么做的。
C++在绝大部分多地方都为C提供了兼容性,并且提供了许多机制,让用户自定义类型可以模拟内建类型。
比如,可以重载++操作符。
让前置返回引用,后置返回值, 正是为了[b]模仿[/b][color=red]C[/color]的[b][color=red]内建类型[/color][/b]的行为。
当然, 也可以不这么做……
class C {
public:
void operator++() {}
void operator++(int) {}
};
同样是合法的C++代码。
但是:
C obj;
++obj;
obj++;
就不合法了 ……
[[i] 本帖最后由 OwnWaterloo 于 2008-10-8 04:48 编辑 [/i]]