Page 111

x 변수에 대한 대입문 바로 뒤에 나온 xRef는 x에 대한 또 다른 이름이다. xRef를 사용하는 것

은 x를 사용하는 것과 같다. xRef에 어떤 값을 대입하면 x의 값도 바뀐다. 예를 들어 다음 코드 는 xRef를 이용하여 x에 10을 대입한다. xRef = 10;

레퍼런스 변수를 클래스 밖에서 선언만 하고 초기화하지 않으면 컴파일 에러가 발생한다. int& emptyRef; // 컴파일 에러 발생

CAUTION_ 레퍼런스 변수는 반드시 생성 즉시 초기화해야 한다. 레퍼런스는 선언할 때 생성되는 반면 데이

터 멤버는 소속 클래스의 생성자 이니셜라이저에서 초기화해야 한다.

정수 리터럴처럼 이름 없는 값에 대해서는 레퍼런스를 생성할 수 없다. 단, const 값에 대해서 는 레퍼런스를 생성할 수 있다. 다음 코드에서는 unnamedRef1을 대입하는 문장에서 컴파일 에 러가 발생한다. 상수가 non-const 레퍼런스이기 때문이다. 이는 5라는 상수를 수정하겠다는 뜻이기 때문에 말이 안 되는 문장이다. 반면 unnamedRef2는 const 레퍼런스로 선언했기 때문 에 문제없이 컴파일된다. const로 선언했기 때문에 애초에 ‘unnamedRef2 = 7’처럼 값을 변경 할 일이 없기 때문이다. int& unnamedRef1 = 5; // 컴파일 에러 발생 const int& unnamedRef2 = 5; // 정상 작동

임시 객체도 마찬가지다. 임시 객체에 대해 non-const 레퍼런스는 만들 수 없지만 const 레 퍼런스는 얼마든지 만들 수 있다. 예를 들어 다음과 같이 std::string 객체를 리턴하는 함수 를 살펴보자. std::string getString() { return "Hello world!"; }

getString ( )을 호출한 결과를 const 레퍼런스에는 담을 수 있다. 그러면 이 레퍼런스가 스코

프를 벗어나기 전까지 std::string 객체를 계속 가리킬 수 있다.

11장 C++의 까다롭고 유별난 부분 497

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement