Udostępnij za pośrednictwem


Składnia deklaracji klasy

Klasa danych członków i członków funkcji są ogólnie zgłoszone zgodnie z zasadami dla deklaracji.Składają się z, w następującej kolejności:

  • Specyfikatory deklaracji.W klasach, przechowywania klasy Specyfikatory statyczne i mutable są dozwolone dla elementów danych.Kwalifikatory cv const i volatile są dozwolone dla elementów danych i funkcji.Specyfikatory deklaracji friend, statyczne, wirtualnego i inline są dozwolone dla funkcji, chociaż friend wskazuje funkcję Państw.

  • Declarators bez inicjatorów.W odniesieniu do funkcji wirtualnych, czystego specyfikatora formularza = 0 jest używana po; niewłaściwy deklarator funkcji do określenia czystej funkcji wirtualnych (wirtualny funkcji bez implementacja w tej klasie).

  • Opcjonalnie pól bitowych.Zobacz pola bitowego.

LUB

  • Definicje funkcji.Definicja funkcji można zawarte w klasie.Jeśli tak jest definicja funkcji składowej, uznaje się automatycznie wbudowanej.

LUB

Dane elementu członkowskiego nie można zadeklarować jako auto, extern, lub zarejestrować klasy magazynowania.Jednakże może to być zadeklarowany jako posiadające statyczne klasy magazynowania.

Kiedy zadeklarować friend klasy w liście elementów członkowskich, można pominąć listy; niewłaściwy deklarator elementów członkowskich.Aby uzyskać więcej informacji o znajomym, zobacz przyjaciel specyfikatora i przyjaciele.Nawet jeśli nie wprowadzono nazwę klasy, można wykorzystywane w friend deklaracji.To friend deklarację wprowadza nazwę.Jednak w deklaracjach Członkowskie dla tych klas, składnia specyfikatora typu rozwinięciem muszą służyć, jak pokazano w następującym przykładzie:

// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
   friend class NotDeclaredYet;
};

W poprzednim przykładzie istnieje wykaz; niewłaściwy deklarator Członkowskich po deklaracji klasy.Ponieważ w deklaracji NotDeclaredYet ma jeszcze nie zostało przetworzone, służy formularz specyfikatora typu rozwinięciem: class NotDeclaredYet.Można określić typ, który został zadeklarowany w friend za pomocą specyfikatora typu normalnej deklaracji członka:

// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};

struct HasFriends {
   friend AlreadyDeclared;
};

Czysty specyfikatora (przedstawione w poniższym przykładzie) wskazuje, że implementacja nie jest świadczona dla wirtualnego funkcji, które zostały zgłoszone.W związku z tym czystego specyfikatora można określić tylko na funkcje wirtualnych.Rozważmy następujący przykład:

// class_member_declaration_syntax3.cpp
// compile with: /c
class StrBase {   // Base class for strings.
public:
   virtual int IsLessThan( StrBase& ) = 0;
   virtual int IsEqualTo( StrBase& ) = 0;
   virtual StrBase& CopyOf( StrBase& ) = 0;
};

Powyższy kod deklaruje abstrakcyjna klasa podstawowa — to znaczy klasy przeznaczone do użycia tylko jako klasa bazowa dla bardziej szczegółowych klas.Takie bazowe klasy można wymuszać określonego protokołu lub zestaw funkcji, oświadczając, jedną lub więcej funkcji wirtualnych "czyste" funkcje wirtualnych, przy użyciu czystego specyfikatora.

Klasy, które dziedziczą z StrBase klasa musi zapewniać implementacje dla czystego funkcje wirtualnych; w przeciwnym razie, zbyt, są uważane za abstrakcyjne klasy podstawowej.

Abstrakcyjne klasy podstawowej nie można zadeklarować obiekty.Na przykład przed obiekt typu dziedziczone z StrBase może być zadeklarowana, funkcje IsLessThan, IsEqualTo, i CopyOf musi być zaimplementowana.(Aby uzyskać więcej informacji na temat abstrakcyjne klasy podstawowej, zobacz Klasy abstrakcyjne.)

Zobacz też

Informacje

Członkowie klasy