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