2011-10-24 4 views

답변

5

로컬 클래스와 중첩 클래스는 다른 짐승입니다.

중첩 클래스은 다른 클래스의 범위 내에서 선언 된 클래스입니다.

로컬 클래스은 함수 정의 내에서 선언됩니다.

내부 클래스은 비표준 C++ 용어이므로 정의 방법을 잘 모르겠습니다.


중첩 클래스 : 멋진 문서 here

IBM 문서.
는 요약 : 중첩 클래스의 이름은 바깥 쪽 클래스의 로컬

  • . 명시 적 포인터, 참조 또는 객체 이름을 사용하지 않는 한 중첩 클래스의 선언은 유형 이름, 정적 멤버 및 둘러싸는 클래스 및 전역 변수의 열거자를 포함하여 표시 가능한 구문 만 사용할 수 있습니다.
  • 중첩 된 클래스의 멤버 함수는 정규 액세스 규칙을 따르고 클래스를 포함하는 멤버에게 특별한 액세스 권한이 없습니다.이
    here의이 대답은 현지 클래스와 관련된 미묘한 점을 문서화 : 바깥 쪽 클래스의 멤버 함수는 중첩 된 클래스의 멤버

현지 클래스에 특별한 액세스 할 수 없습니다.

+1

그리고 C++에는 내부 클래스가 없습니다. 그것은 Java 개념입니다. –

2

C++ 11 (N3290) 초안을 인용 :

9.7 중첩 클래스가 선언 [class.nest]

1 A 클래스가 다른 클래스 내에서 선언 될 수있다. 다른 클래스 내에서 선언 된 클래스는 중첩 클래스라고합니다.

9.8 로컬 클래스 선언 [class.local]

1 A 클래스 함수 정의 내에서 선언 될 수있다; 이러한 클래스를 로컬 클래스라고합니다.

C++ 표준에 지정된 내부 클래스 개념이 없습니다.

0

내부 클래스는 둘러싼 클래스의 this 참조를 캡처합니다. 내부 클래스 인스턴스의 계층 구조는 트리 구조를 형성합니다. 이는 Java에서만 고유합니다.