c+const 참조 및 비 const 참조 소개
1215 단어 const 참조비 const 참조
const int i = 10;
const int &ref = i;
ref 를 읽 을 수 있 지만 수정 할 수 없습니다.이렇게 하 는 것 은 의미 가 있다.i 자체 가 수정 할 수 없 기 때문에 당연히 ref 를 통 해 수정 할 수 없다.그래서 const 변 수 를 비 const 에 할당 하 는 것 은 불법 입 니 다.
int &ref1 = i; // error: nonconst reference to a const object
비 const 인용 은 비 const 형식 변 수 를 가리 키 는 인용 입 니 다.const 인용 은 서로 다른 유형의 대상 이나 오른쪽 값(예 를 들 어 글자 액면가 상수)으로 초기 화 할 수 있 지만 const 인용 이 아니면 안 됩 니 다.
// legal for const references only
int i = 10;
const int & ref = 42;
const int & ref1 = r + i;
double d = 3.14;
const int &ref2 = d;
서로 다른 유형의 ref 2 에 연 결 된 이 유 를 예 로 들 면 컴 파일 러 는 ref 2 와 관련 된 코드 를 다음 과 같이 변환 합 니 다.
int temp = d;
const int &ref2 = temp; // bind ref2 to temporary
ref2 는 실제 적 으로 임시 변수 에 연 결 된 것 입 니 다.ref 2 가 const 가 아니라면 도리 에 따라 ref 2 를 수정 하여 d 의 값 을 수정 할 수 있 지만 실제 d 는 변 하지 않 습 니 다.그래서 이 문 제 를 피하 기 위해 ref 2 는 const 일 수 밖 에 없다.비 const 인용 은 이 인용 과 같은 유형의 대상 에 만 연결 되 며,const 인용 은 다 르 지만 관련 된 유형의 대상 에 연결 되 거나 오른쪽 값 에 연결 할 수 있 습 니 다.