2014-10-22 1 views
0

저는 참조에 대해 연구하고 있었고, rvalue를 함수에 참조 인수로 전달하려고했습니다.rvalue가 참조를 위해 작동하지 않습니다.

하지만 이것은 작동하지 않았습니다. lvalue를 전달하려고 시도했을 때 작동했습니다.

#include<iostream> 
using namespace std; 

int fun(int &x) 
{ 
    return x; 
} 
int main() 
{ 
    int x=10; 
    cout << fun(x); 
    return 0; 
} 

왜 이런 일이 발생하는지 설명 할 수 있습니까?

+1

변경해야하는 값은 무엇이 필요합니까? – chris

+0

포인터와 동일합니다. 리터럴 '10'에 대한 포인터를 얻을 수있을 것으로 기대하지 않습니까? –

답변

6

는 단지 r- 수치 기준 또는 const좌변 참조 결합 수있는 r- 수치; 비 const가 아닌 왼쪽 값 참조. 그래서 이들 중 하나가 작동합니다 :

이는 함수가 생각한 변수 대신 임시 값을 수정할 수있는 놀라운 동작을 방지하기위한 것입니다. 예 :

+0

당신이 나를 이길 :) – ha9u63ar

0

fun(int &x)에 참조를 전달하려고합니다. & 부호는 "전달 인수 주소/참조"를 의미합니다. 현재 수정 가능한 좌변과 상수 값을 혼합하려고합니다. 이는 잘못된 것입니다. fun(const int &x) 잘 작동 할 것입니다. 이것은 아마도 사용자가 원하는 작업 일 것입니다. this

관련 문제