참조는 이미 있는 객체의 다른 이름이다. 선언할 때 반드시 객체를 묶어야 하고, 나중에 다른 객체를 다시 묶을 수 없다.
참조는 별명이 된다
int score = 3;
int& alias = score;
alias = 4; // score도 4
const int& view = score;
// view = 5; // 컴파일 오류함수가 `int&`를 반환하면 호출자는 그 객체를 고칠 수 있다. 지역 변수의 참조를 반환하면 함수가 끝난 뒤 그 객체는 사라진다. 반환된 참조를 쓰는 것은 미정의 동작이다.
const가 붙는 자리
`const int*`는 가리키는 값을 못 고치고, `int* const`는 포인터 자체에 다른 주소를 못 넣는다. 멤버 함수 뒤의 `const`는 그 함수가 객체의 관찰 가능한 상태를 바꾸지 않는다는 뜻이다. const 객체는 const 멤버 함수만 호출할 수 있다.
임시 값에 붙은 const 참조는 그 참조가 사는 동안 임시를 연장한다. 비const 참조는 임시 값에 묶이지 않는다.
댓글
0개아직 댓글이 없습니다.