【发布时间】:2023-04-01 18:52:02
【问题描述】:
为什么在引用变量上,前增量有效,而后增量无效?
#include <iostream>
void swap(int&, int&);
int main()
{
int x=10, y=20;
int &a=x, &b=y;
swap(++a, ++b); //swap (a++,b++) is not allowed.
printf("%d %d ", a, b);
return 0;
}
void swap(int& x, int& y)
{
x+=2;
y+=3;
}
为什么swap(++a, ++b) 允许但swap(a++, b++) 说:
[错误] 从“int”类型的右值初始化“int&”类型的非常量引用无效
【问题讨论】:
-
为简单起见,请注意,如果您尝试直接使用
main的x和y,则会出现相同的行为。引用a和b只会使问题看起来比实际更复杂。
标签: c++