0

刚开始做运算符重载,我的老师没有深入研究它们,所以我想知道为什么前缀/后缀递增/递减的返回类型不同。当我看到前缀重载时,返回类型写为 Type&,但后缀的返回类型写为 Type。我做了没有 & 的前缀,并且功能都正常运行。返回类型是否会影响任何内容,还是只是区分前缀和后缀的另一种方式?

4

3 回答 3

2

原因是允许链接:

++ ++ ++ i;

要允许i三倍递增,++必须返回引用并获取引用。如果它返回一个临时副本,第二个++将增加......临时副本(实际上,临时副本不会绑定 a &,因此它甚至不会编译)。

于 2016-02-17T17:41:54.703 回答
1

添加到 Emilio 的答案后缀递增创建一个临时变量并将其设置为 1 加上您想要递增的变量,其中作为前缀递增递增实际变量,这在某些情况下可以提高性能。

于 2016-02-17T18:07:06.853 回答
0

主要原因是遵循 C++ 中内置类型的语义,其中前缀递增/递减返回左值,后缀一返回右值。详细信息可以在这里找到

于 2016-02-17T18:17:41.930 回答