언어/C++

(C++)참조자 const

흥부와놀자 2020. 10. 6. 11:24

참조자는 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참조자의 경우 처음 참조한 변수는 바뀌지 않는다. 

헷갈릴수 있는 부분이 저렇게 참조자에 다른 변수를 대입한다면 아예 다른 변수를 참조하는게 아닐까하고 생각할수 있지만 참조하는 변수는 바뀌는게 아니다. 해당 변수의 값만 바뀌는것이다. 즉 참조자 자체가 const이기 때문에 또 const를 붙이는건 컴파일러에 따라 Warning을 뱉거나 중복 const 사용으로 에러를 뱉을 수 있다.