본문 바로가기

참조자2

(C++)참조자 const 참조자는 L-value와 R-value참조자가 있다. 초기값으로 각 value에 맞는 값을 넣어주면 되는데 const키워드가 붙은 참조자에 대해 알아보자. 1. const int& const int& a 나 int const& a나 같은 의미이다. 둘다 참조자 자체를 상수화시키는게 아니라 상수형 int를 참조하는 의미이다. const int를 참조하기 때문에 (초기화되는 변수가 꼭 const일필요는 없다.) 해당 변수의 별명격인 참조자의 값을 다른값으로 바꿀수 없다. 또한 초기값으로 항상 변수가 와야했던것과 달리 const이기에 상수로 초기화 해 줄 수 있다. 2. int& const 참조자 자체를 상수화 시킨다. 하지만 생각해보면 참조자 자체가 const와 동격이 된다. L-value참조자의 경우 처음.. 2020. 10. 6.
(C++)VS에서 함수에서 지역변수의 레퍼런스값 리턴시 접근할수 있는 이유 int& Rf() { int a1 = 3; int& A1 = a1; printf("%d", A1); return A1; } int main() { int& a=Rf(); a = 3; printf("%d", a); } 위의 코드와 같이 Rf함수에서 지역변수의 참조인 A1을 리턴하여 main함수에서의 참조자a에 저장하였다. 원래대로라면 지역변수 A1이 가리키는 a1은 함수 Rf의 스코프가 종료될때 해제되고 접근이 불가능해야 정상일것이다. 하지만 위의 코드는 잘 동작한다. a를 바꾸는것은 물론이고 main과 Rf에서의 변수의 주소값이 동일하게 나온다. 왜 이것이 가능한지 나는 궁금했고 결과적으로 말하면 정확한 원인은 밝혀내지 못했다. 하지만 조사했던 부분을 한번 포스팅해보고자 한다. int& Rf() { in.. 2020. 6. 29.