2010-03-15 3 views

답변

8

기준의 수명이 시작되고,이 초기화 된 후에는 그 다른 변수에 별명을 나타낸다. 다음을 고려하십시오.

int& x; 

/// ... 

SomeClassConstructor(void) 
{ // initialization list is done, reference lifetime has begun, and 
    // therefore is an alias. It already must alias a variable, then. 

    x = 5; // setting whatever x is an alias for to 5 
} 

생성자를 입력하면 모든 멤버 변수가 초기화됩니다. 참고로, 이는 변수를 참조해야 함을 의미합니다. Ergo, 초기화 목록의 내용을 참조하도록 초기화해야합니다.

마찬가지로 const 변수에 할당하는 것은 잘못된 것입니다 : const int x = 5; x = 2; // doesn't compile. 값으로 초기화되어야하며 수명 동안 값으로 유지됩니다. 따라서 초기화 목록에서 초기화해야합니다.

+0

@Sandeep - 질문에 대한 답변입니다. – mukeshkumar

+0

일단 초기화되면 참조 유형 변수는 항상 동일한 객체를 가리 킵니다. * 다른 객체를 가리 키도록 수정할 수는 없습니다. * – jfs

+0

하지만 Initilazation 목록에서는 초기화하지 않고 생성자 내부에서는 초기화하지 않습니다 (C'tor의 열린 중괄호 뒤에). – Sandeep

관련 문제