Sintassi di dichiarazione del membro di classe
I membri dati della classe e i membri di funzione vengono dichiarati in genere dopo le regole per le dichiarazioni.Sono costituiti da, in questo ordine:
Identificatori di dichiarazione.Nelle classi, gli identificatori di classe di archiviazione statico e modificabile i valori consentiti i membri dati.i cv-qualificatori const e volatile i valori consentiti i membri di funzione e dati.Gli identificatori di dichiarazione friend, statico, virtuale e inline i valori consentiti le funzioni, sebbene friend punta a una funzione non membro.
dichiaratori senza inizializzatori.Nel caso delle funzioni virtuali, l'identificatore pure del form = 0 viene utilizzato dopo la dichiarazione di funzione per specificare una funzione virtuale pura (una funzione virtuale senza alcuna implementazione di tale classe).
facoltativamente, campi di bit.vedere campi di bit.
OR
- Definizione di funzione.La definizione di una funzione può essere inclusa nella classe.Se una funzione membro è così definita, viene automaticamente considerato inline.
OR
- Modelli del membro (vedere le note sui modelli del membro C++ in Membri di template di classe).
I dati dei membri non possono essere dichiarati come autoidentificatori, extern, o il registro classe di archiviazione.Possono, tuttavia, essere dichiarate come dotata di statico classe di archiviazione.
Quando si dichiara un oggetto friend classificare in un elenco di membri, è possibile omettere l'elenco dei dichiaratori del membro.Per ulteriori informazioni sugli elementi friend, vedere identificatore friend e Friend.Anche se il nome di classe non è stato introdotto, può essere utilizzato in un oggetto friend dichiarazione.ciò friend la dichiarazione viene introdotto il nome.Tuttavia, nelle dichiarazioni dei membri per tali classi, la sintassi l'elaborazione dell'identificatore di tipo deve essere utilizzata, come illustrato nell'esempio seguente:
// class_member_declaration_syntax.cpp
// compile with: /c
struct HasFriends {
friend class NotDeclaredYet;
};
Nell'esempio precedente, non è disponibile un elenco di dichiarazione del membro dopo la dichiarazione di classe.Poiché la dichiarazione per NotDeclaredYet non è ancora stato elaborato, l'identificatore che di tipo elaborato il form viene utilizzato: class NotDeclaredYet.Un tipo dichiarato può essere specificato in un oggetto friend dichiarazione di membro che utilizzano un identificatore di tipo normale:
// class_member_declaration_syntax2.cpp
// compile with: /c
struct AlreadyDeclared {};
struct HasFriends {
friend AlreadyDeclared;
};
L'identificatore pure (illustrato nell'esempio) indica che non viene fornita alcuna implementazione per la funzione virtuale che è dichiarata.Di conseguenza, l'identificatore pure può essere specificato solo con funzioni virtuali.Si consideri l'esempio seguente:
// 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;
};
Il codice precedente viene dichiarata una classe base astratta, ovvero una classe progettata per essere utilizzata solo come classe base per le classi più specifiche.Tali classi di base possono applicare un particolare protocollo, o un insieme di funzionalità, dichiarare uno o più funzioni virtuali come funzioni virtuali “e„, utilizzando l'identificatore pure.
Classi che ereditano da StrBase la classe deve fornire le implementazioni per le funzioni virtuali pure; in caso contrario, inoltre, vengono considerate classi di base astratta.
Le classi di base astratte non possono essere utilizzate per dichiarare gli oggetti.Ad esempio, prima di un oggetto di un tipo ereditato da StrBase è possibile dichiarare, le funzioni IsLessThan, IsEqualToe CopyOf deve essere implementato.(Per ulteriori informazioni sulle classi di base astratte, vedere classi astratte).