2013-10-03 2 views
1

내가 아주 이것에 출력이 리 난에 대한 참조 인 경우 10 10 왜 이해가 안 ...문제 이해 참조 정의

int i, &ri = i; 
i = 5; 
ri = 10; 
std::cout << i << " " << ri << std::endl; 

누군가가 나를 위해이 업을 취소 할 수? 마찬가지로

난 = R2 및 R2는 A 내지 D가 D에 refrence 경우

int i = 0, &r1 = i; 
double d = 1, &r2 = d; 

r2 = r1; 
std::cout << r2; // output 0 
i = r2; 
std::cout << i; // output 0 
r1 = d; 
std::cout << r1; // output 0 

= 1, 왜 OUPUT 1 아닌가? 또한 r1 = d 일 때 왜 출력 1도 아닌가?

+0

당신은 참조를 재 할당 할 수 없습니다 설정 여기

ri = 10; 

전 = 5를 설정합니다. – chris

+0

하지만 r2 = d이면 왜 r2 = r1, 1에 출력되지 않습니까? – Tyler

+0

첫 번째 스 니펫에서 'ri'는 'i'의 별칭입니다. –

답변

0

참조는 원래 항목을 주소 지정하는 것과 같습니다. * (& some_variable) 코드에 따라서 라인

r2 = r1; 

에서

마찬가지로 0이다 i의 값 d의 값을 설정한다. 모든 값은에

다음에서

당신은 이름이 의미가됩니다 ref_d-ref_ir1r2를 교체 할 경우 0.

여기를보십시오 : 참조

http://ideone.com/SHxQLN

int i = 0, &ref_i = i; 
double d = 1, &ref_d = d; 

ref_d = ref_i;  // <<-------------------- Put value of i into d 
std::cout << ref_d; 

i = ref_d; 
std::cout << i; 

ref_i = d; 
std::cout << ref_i; 
+0

고마워요! 그 사이트는 매우 유용합니다! – Tyler

+0

여기서 중요한 점은 훌륭한 명명 규칙이있는 코드는 알고리즘 작성, 이해, 디버그가 훨씬 쉬워 져 유지 관리 비용이 절감된다는 것입니다. –

0

생각해을 객체의 별칭 (대체 이름)으로. 참조로 무엇을 하든지 참조하는 객체로 참조를 수행합니다. 여기 :

int i, &ri = i; 

당신은 ri가 i의 다른 이름이라고 말합니다. 따라서, 여기 :

i = 5; 

당신은 내가 = 10