bks*_*bks 10 c++ operator-overloading
在C++中我理解(++i)应该返回引用i因为需要连接运算符,但我无法弄清楚的是:
为什么(i++)要按i价值回报?
任何人都可以澄清一下.
Ste*_*hen 27
i++返回一个值,因为它返回旧值i,而i增加值1.
这个的基本实现是:
int i++() {
int old = i;
i = i + 1;
return old;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果它返回一个引用,它将是错误的值 ......因为它i的值已经增加了!
ken*_*ytm 19
++i 可写成
prefix_inc (this) {
increase this by 1
return this
}
Run Code Online (Sandbox Code Playgroud)
由于i返回了真实,我们可以参考它.但是,i++看起来像
postfix_inc (this) {
set old_this = copy of this
increase this by 1
return old_this
}
Run Code Online (Sandbox Code Playgroud)
因为old_this它只是一个局部变量,i++完成后它的引用是没有意义的.所以逻辑上它应该返回一个右值.
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |