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; //✔️ 가능
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가 있으므로
}