2011-10-24 13 views

Odpowiedz

5

Klasa lokalna i klasa zagnieżdżona to różne bestie.

A Zagnieżdżona klasa jest klasą zadeklarowaną w ramach innej klasy.

A Lokalna klasa jest zadeklarowana w definicji funkcji.

Wewnętrzna klasa jest niestandardowym terminem C++, więc nie jestem pewien, jak to zdefiniować.


zagnieżdżone Ćwiczenia:

IBM Documentation jako miły dokumentacji here.
Podsumowując:

  • Nazwa klasy zagnieżdżonej jest lokalny do tej klasy okalającego. Jeśli nie używasz wyraźnych wskaźników, referencji lub nazw obiektów, deklaracje w klasie zagnieżdżonej mogą używać tylko widocznych konstrukcji, w tym nazw typów, elementów statycznych i modułów wyliczających z klasy otaczającej i zmiennych globalnych.
  • Funkcje członkowskie klasy zagnieżdżonej są zgodne z normalnymi regułami dostępu i nie mają specjalnych uprawnień dostępu dla członków ich klas. funkcje składowe klasy otaczającej nie mają specjalnego dostępu do członków klasy zagnieżdżonej

Lokalne klasy:
Ta odpowiedź kopalni here dokumentuje subtelne punkty związane z miejscowymi klasami.

+1

I nie ma wewnętrznych klas w C++. To jest koncepcja Java. –

2

Cytowanie projekt C++ 11 (N3290)

9,7 zgłoszenia klasy zagnieżdżone [class.nest]

1 Klasa może być zadeklarowane w innej klasy. Klasa zadeklarowana w innym jest nazywana klasą zagnieżdżoną .

9.8 Lokalne deklaracje klasy [class.local]

1 Klasa może zostać uznane w definicji funkcji; taka klasa nazywa się klasą lokalną.

Nie ma koncepcji klasy wewnętrznej określonej w standardzie C++.

0

Klasy wewnętrzne przechwytują odwołanie do klauzuli otaczającej klasy: this. Hierarchia instancji klasy wewnętrznej tworzy strukturę drzewa. Jest to unikalne dla Javy.