查看完整版本: <open>c++ 为什么前置的递增要用到引用,而后之不用呢?(课本121

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]]
页: [1]
查看完整版本: &lt;open&gt;c++ 为什么前置的递增要用到引用,而后之不用呢?(课本121