Tại sao công việc gia tăng trước nhưng sau tăng không có trên biến tham chiếu?Toán tử tăng trên biến tham chiếu
#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;
}
Tại sao swap(++a, ++b)
phép nhưng swap(a++, b++)
nói:
[Lỗi] khởi không hợp lệ tham chiếu không const của loại 'int &' từ một rvalue của loại 'int'
Vì mục đích đơn giản, lưu ý rằng hành vi tương tự xảy ra nếu bạn cố gắng sử dụng '' '' '' '' và 'y' trực tiếp. Tham chiếu 'a' và' b' chỉ phục vụ để làm cho vấn đề xuất hiện phức tạp hơn nó. –