Klassenmember-Deklarations-Syntax

Klassen und Funktionen datenmember Member werden im Allgemeinen nach den Regeln für Deklarationen deklariert.Sie bestehen in der folgenden Reihenfolge:

  • Deklarationen Parameterbezeichner.In den static Parameterbezeichner Speicherklassen sind die Klassen und änderbar für Datenmember unzulässig.Die Qualifizierer Lebenslauf und const Daten werden für volatile zulässig und Member.Der Parameterbezeichner Deklarationen friend, static, virtuell und inline werden für Funktionen zulässig, obwohl friend Nichtmitglieds eine Funktion angibt.

  • Deklaratoren ohne Initialisierung.Im Fall der virtuellen Funktionen wird der reine Bezeichner des Formulars 0 = nachdem der Funktion deklarator verwendet, um eine rein virtuelle Funktion (eine virtuelle Funktion ohne eine Implementierung in dieser Klasse) anzugeben.

  • Bitfelder Optional.Zeigen Sie Bitfelder.

OR

  • Funktionsdefinitionen.Die Definition einer Funktion kann in der Klasse enthalten sind.Wenn eine Memberfunktion so definiert wird, gilt es automatisch als Inlineschaltfläche.

OR

Memberdaten kann nicht als auto, externoder Registerspeicher Klasse deklariert werden.Sie können jedoch static , als seien ihre Speicherklasse deklariert werden.

Wenn Sie eine friend-Klasse in einer Liste Member deklarieren, können Sie deklaratoren Member der Liste weglassen.Weitere Informationen finden Sie unter Freunde und friend-SpezifiziererFreunde.Auch wenn ein Klassenname nicht eingegeben wurde, kann er in einer friend Deklaration verwendet werden.Diese friend Deklaration stellt den Namen vor.In den Memberdeklarationen für solche Klassen, muss die Syntax ausgearbeitte Typspezifizierer, wie im folgenden Beispiel gezeigt:

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

Im vorherigen Beispiel gibt es keine Member Liste deklaratoren nach der Klassendeklaration.Da die Deklaration für NotDeclaredYet noch nicht verarbeitet worden ist, wird das ausgearbeitte Typspezifizierer Form verwendet wird: class NotDeclaredYet.Ein Typ, der deklariert wurde, kann in einer friend-Memberdeklaration mit einem normalen Typspezifizierers angegeben werden:

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

struct HasFriends {
   friend AlreadyDeclared;
};

Der reine Bezeichner im folgenden Beispiel gezeigt () gibt an, dass keine Implementierung für die virtuelle Funktion angegeben, die deklariert wird.Daher kann der rein virtuelle Funktionen nur für Bezeichner angegeben werden.Betrachten Sie das folgende Beispiel:

// 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;
};

Der vorhergehende Code deklariert eine abstrakte Basisklasse, also eine Klasse, die nur als Basisklasse für spezifischere Klasse verwendet werden soll.Diese Basisklassen können ein bestimmtes Protokoll oder Gruppe von Funktionen erzwingen, indem Sie eine oder mehrere virtuelle Funktionen als „rein“ virtuelle Funktionen unter Verwendung des reinen Bezeichner deklarieren.

Klassen, die von der StrBase-Klasse erben, müssen Implementierungen für die reinen virtuellen Funktionen bereitstellen. Andernfalls werden sie auch als abstrakte Basisklassen.

Eine abstrakte Basisklassen können nicht verwendet werden, um Objekte zu deklarieren.Bevor beispielsweise ein Objekt eines Typs, der von StrBase geerbt wird, deklariert werden kann, müssen die Funktionen IsLessThan, IsEqualTound CopyOf implementiert werden.(Weitere Informationen zu abstrakten Basisklassen finden Sie unter Abstrakte Klassen).

Siehe auch

Referenz

Klassenmember