[C++] const 참조자

dd_ddong·2022년 7월 9일
0

c++

목록 보기
9/38

const 변수의 참조자

int main()
{
	const int num1 = 10;
    // int &ref1 = num1;
    const int& ref2 = num1;
}

ref1의 경우 const 변수의 값을 바꾸는걸 허용해주는 것이기에 에러가 난다.
const 변수는 const 참조자만 선언할 수 있다.
const 참조자는 참조자를 통한 값 변경을 허용하지 않는다.

상수의 참조자

const int& ref = 30;
30이라는 리터럴 상수로 참조자를 초기화 할 수 있다. 이는 변수로만 참조자를 초기화 할 수 있다는 것을 위배한다.

위와 같은 식이 성립하는 이유는 const 참조자를 상수로 초기화할 때 c++은 상수를 메모리상에 남기기 위해 임시변수에 상수를 할당한다. 그리고 const 참조자가 그 임시변수를 참조하도록 하기 때문에 결과적으로 변수를 참조하게 된다.

상수의 참조자 활용

int Adder(const int& num1, const int & num2)
{
	return num1 + num2;
}

Adder함수를 호출할 때 상수도 매개변수로 넘길 수 있기 때문에 Adder(30, 20)으로 호출할 수 있다.
물론 Adder(num1, num2)로 호출할 수 있다.

문제 02-2

const int num = 12;
1. 포인터 변수 선언

  • const int* ptr = # -> *ptr을 통해 값 변경 허용을 하면 안되기 때문에
  1. 만든 포인터 변수를 참조하는 참조자 선언
  • const int *(&ref) = ptr; -> const int 형의 참조자는 const int 형으로 맞춰줌
  1. 만든 포인터와 참조자로 num값 출력
  • cout << *ptr << *ref;

0개의 댓글