참조와 const

강형우·2022년 12월 13일
0

C++

목록 보기
9/10
post-thumbnail
int x = 5; 
int &ref_x = x; // ✔️ 가능
const int &ref_x = x; // ✔️ 가능
const int x = 5;
int &ref_x = x; // ❌ 에러!
const int x = 5;
const int &ref_x = x; //✔️ 가능
const int &ref_2 = ref_x; //✔️ 가능
int x = 5;
int &ref_x = x; //✔️ 가능
const int &ref_2 = ref_x; //✔️ 가능
  • reference와 const reference의 차이
int &ref_x = 3+4; // ❌ 에러! 리터럴이기 때문
const int &ref_x = 3+4 // ✔️ 가능
cout << ref_x << endl; // ✔️ 가능
cout << &ref_x << endl; // ✔️ 가능

reference는 L-value만 참조 가능하지만, const reference는 L-value, R-value 모두 참조 가능하다

  • 두 식의 차이점은?
const int ref_x = 3+4; 
const int &ref_x = 3+4 
void dofunc(int &x)
{
	cout << x << endl;
}

int main()
{
	int a = 1;
    dofunc(a);
    dofunc(1); // ❌ 에러! 불가능
}
void dofunc(const int &x)
{
	cout << x << endl;
}

int main()
{
	int a = 1;
    dofunc(a);
    dofunc(1); // ✔️ 가능 함수 인자에 const가 있으므로
    dofunc(a+2); // ✔️ 가능 함수 인자에 const가 있으므로
    dofunc(3*5); // ✔️ 가능 함수 인자에 const가 있으므로
}

0개의 댓글