이름 및 정규화 된 이름

이진 범위 결정 연산자와 함께 사용 되는 이름 (::) "정규화 된 이름입니다." 라고 이진 범위 결정 연산자 연산자의 왼쪽 또는 해당 기본 클래스의 멤버를 지정 된 클래스의 멤버 여야 합니다 뒤에 지정 된 이름입니다.

이름을 지정한 다음 멤버 선택 연산자 (. 또는 ->) 연산자의 왼쪽 또는 해당 기본 클래스의 멤버를 지정 된 개체의 클래스 형식 멤버 여야 합니다.멤버 선택 연산자의 오른쪽에 지정 된 이름이 (– >) 개체도 될 수 있습니다 왼쪽에 제공 된 다른 클래스 유형의 – > 클래스 개체 및 클래스는 오버 로드 된 멤버 선택 연산자를 정의 하는 (– >) 포인터를 다른 클래스 형식으로 계산.(이 규정에 자세히 설명 되어 클래스 멤버 액세스입니다.)

컴파일러 이름을 이름이 발견 되 면 중지 다음 순서 대로 검색 됩니다.

  1. 이름 함수 안에서 사용 되는 경우 현재 블록 범위입니다. 그렇지 않으면 전역 범위입니다.

  2. 바깥쪽 함수 인수가 포함 하는 가장 바깥쪽 함수 범위를 포함 하 여 각 바깥쪽 블록 범위를 통해.

  3. 멤버 함수 내부 이름을 사용 하는 경우 클래스의 범위에 대 한 이름은 검색 합니다.

  4. 클래스의 기본 클래스에 대 한 이름은 검색 합니다.

  5. (있는 경우) 클래스 범위 바깥쪽 중첩 및 기본 검색 됩니다.바깥쪽 바깥쪽 클래스 범위를 검색할 때까지 검색을 계속 합니다.

  6. 전역 범위를 검색 합니다.

그러나,이 검색 순서는 다음과 같이 수정할 수 있습니다.

  1. 이름 앞에 의해 :: 강제 전역 범위에서 시작 하 여 검색 합니다.

  2. 이름 앞의 클래스, struct, 및 union 키워드 검색 하도록 컴파일러 강제로 클래스, struct, 또는 union 이름.

  3. 범위 결정 연산자의 왼쪽에 이름 (::)만 될 수 있습니다 클래스, struct, 네임 스페이스, 또는 union 이름입니다.

이름에 비정적 멤버를 참조 하지만 정적 멤버 함수에 사용 되 면 오류 메시지가 생성 됩니다.바깥쪽 클래스에서 비정적 멤버 이름을 참조 하면 포함 된 클래스에 바깥쪽 클래스가 없기 때문에 마찬가지로, 오류 메시지가 생성 됩니다 대 한 포인터입니다.

참고 항목

참조

범위 규칙 요약