로컬 클래스, 내부 클래스 및 중첩 클래스는 C++에서 동일한 것을 의미합니까?Local 클래스, Inner 클래스 및 Nested 클래스는 C++과 동일한 것입니까?
5
A
답변
5
로컬 클래스와 중첩 클래스는 다른 짐승입니다.
중첩 클래스은 다른 클래스의 범위 내에서 선언 된 클래스입니다.
로컬 클래스은 함수 정의 내에서 선언됩니다.
내부 클래스은 비표준 C++ 용어이므로 정의 방법을 잘 모르겠습니다.
중첩 클래스 : 멋진 문서 here로
IBM 문서.
는 요약 : 중첩 클래스의 이름은 바깥 쪽 클래스의 로컬
- . 명시 적 포인터, 참조 또는 객체 이름을 사용하지 않는 한 중첩 클래스의 선언은 유형 이름, 정적 멤버 및 둘러싸는 클래스 및 전역 변수의 열거자를 포함하여 표시 가능한 구문 만 사용할 수 있습니다.
- 중첩 된 클래스의 멤버 함수는 정규 액세스 규칙을 따르고 클래스를 포함하는 멤버에게 특별한 액세스 권한이 없습니다.이
내 here의이 대답은 현지 클래스와 관련된 미묘한 점을 문서화 : 바깥 쪽 클래스의 멤버 함수는 중첩 된 클래스의 멤버
현지 클래스에 특별한 액세스 할 수 없습니다.
2
C++ 11 (N3290) 초안을 인용 :
9.7 중첩 클래스가 선언 [class.nest]
1 A 클래스가 다른 클래스 내에서 선언 될 수있다. 다른 클래스 내에서 선언 된 클래스는 중첩 클래스라고합니다.
9.8 로컬 클래스 선언 [class.local]
1 A 클래스 함수 정의 내에서 선언 될 수있다; 이러한 클래스를 로컬 클래스라고합니다.
C++ 표준에 지정된 내부 클래스 개념이 없습니다.
0
내부 클래스는 둘러싼 클래스의 this
참조를 캡처합니다. 내부 클래스 인스턴스의 계층 구조는 트리 구조를 형성합니다. 이는 Java에서만 고유합니다.
그리고 C++에는 내부 클래스가 없습니다. 그것은 Java 개념입니다. –