Condividi tramite


Sintassi di dichiarazione dei membri delle classi

I membri dati delle classi e i membri di funzione vengono dichiarati in genere dopo le regole per le dichiarazioni. Sono costituiti, in questo ordine, dagli elementi seguenti:

  • Identificatori di dichiarazione. Nelle classi gli identificatori della classe di archiviazione static e mutable sono consentiti per i membri dati. Gli elementi cv-qualifier const e volatile sono consentiti per i membri di funzione e dati. Gli identificatori di dichiarazione friend, static, virtual e inline sono consentiti per le funzioni, sebbene friend indichi una funzione non membro.

  • Dichiaratori senza inizializzatori. Nel caso delle funzioni virtuali, l'identificatore pure con formato = 0 viene utilizzato dopo il dichiaratore di funzione per specificare una funzione virtuale pure, ovvero una funzione virtuale senza alcuna implementazione in tale classe.

  • Facoltativamente, campi di bit. Vedere Campi di bit.

OR

  • Definizioni di funzione. La definizione di una funzione può essere inclusa nella classe. Se una funzione membro è definita in questo modo, viene automaticamente considerata inline.

OR

I dati dei membri non possono essere dichiarati come classe di archiviazione auto, extern o register. Tali dati, tuttavia, possono essere dichiarati come dotati della classe di archiviazione static.

Quando si dichiara una classe friend in un elenco di membri, è possibile omettere l'elenco di dichiarazione dei membri. Per ulteriori informazioni sugli elementi friend, vedere Identificatore friend e Friend. Anche se non è stato introdotto, il nome di una classe può essere utilizzato in una dichiarazione friend. Tale dichiarazione friend introduce il nome. Tuttavia, nelle dichiarazioni dei membri per tali classi, deve essere utilizzata la sintassi degli identificatori di tipo elaborato, 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 dichiaratori dei membri dopo la dichiarazione di classe. Poiché la dichiarazione per NotDeclaredYet non è ancora stata elaborata, viene utilizzato il formato dell'identificatore del tipo elaborato class NotDeclaredYet. Un tipo dichiarato può essere specificato in una dichiarazione del membro friend utilizzando 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 della funzione virtuale dichiarata. Di conseguenza, l'identificatore pure può essere specificato solo su 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;
};

Nel codice precedente viene dichiarata una classe base astratta, ovvero una classe progettata per essere utilizzata solo come classe base per classi più specifiche. Tali classi base possono applicare un particolare protocollo o un set di funzionalità dichiarando una o più funzioni virtuali come funzioni virtuali pure tramite l'identificatore pure.

Le classi che ereditano dalla classe StrBase devono fornire le implementazioni per le funzioni virtuali pure; in caso contrario, inoltre, vengono considerate classi base astratte.

Le classi base astratte non possono essere utilizzate per dichiarare gli oggetti. Ad esempio, prima che un oggetto di un tipo ereditato da StrBase possa essere dichiarato, devono essere implementate le funzioni IsLessThan, IsEqualTo e CopyOf. Per ulteriori informazioni sulle classi base astratte, vedere Classi astratte.

Vedere anche

Riferimenti

Membri di classe