gpt4 book ai didi

c++ - 引用变量的增量运算符

转载 作者:可可西里 更新时间:2023-11-01 17:39:03 25 4
gpt4 key购买 nike

为什么预增量有效而后增量对引用变量不起作用?

#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++) 说:

[Error] invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int'

最佳答案

当你打电话时

swap (a++,b++)

a++b++ 给你一个临时对象,因为后递增返回以前的值。由于 swap() 通过引用获取其参数,因此它们无法绑定(bind)到那些临时值。使用 ++a++b 工作,因为我们首先递增 ab 然后将其传递给 swap所以没有临时的。

关于c++ - 引用变量的增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com