Membri di classe
Le classi possono disporre dei seguenti tipi di membri:
Classi che includono classi, strutture e unioni. Vedere Dichiarazioni di classi annidate e Unioni.
-
Nota
Gli elementi friend vengono inclusi nell'elenco precedente perché sono contenuti nella dichiarazione di classe.Non sono tuttavia membri effettivi della classe perché non si trovano nell'ambito della classe.
Note
L'elenco dei membri di una classe può essere suddiviso in sezioni private, protected e public utilizzando le parole chiave note come identificatori di accesso. I due punti : devono seguire l'identificatore di accesso. Queste sezioni non devono essere contigue, ovvero, queste parole chiave possono essere visualizzate diverse volte nell'elenco dei membri. La parola chiave consente di accedere a tutti i membri fino all'identificatore di accesso successivo o alla parentesi graffa di chiusura.
Le dichiarazioni dei membri nell'elenco dei membri sono separate da punti e virgola ;. Vedere la pagina relativa alla sintassi di dichiarazione dei membri di classe.
Lo scopo dell'elenco dei membri è di:
Dichiarare il set completo di membri per una determinata classe.
Specificare l'accesso (pubblico, privato o protetto) associato ai diversi membri di classi.
Nella dichiarazione di un elenco di membri è possibile dichiarare i membri una sola volta; la ridichiarazione dei membri genera un messaggio di errore. Poiché un elenco di membri costituisce un set completo dei membri, non è possibile aggiungere membri a una determinata classe con dichiarazioni di classe successive.
I dichiaratori di membro non possono contenere inizializzatori. La fornitura di un inizializzatore genera un messaggio di errore come illustrato nel codice seguente:
// class_members1.cpp
// C2864 expected
class CantInit
{
public:
long l = 7; // Error: attempt to initialize
// class member.
static int i = 9; // Error: must be defined and initialized
// outside of class declaration.
};
int main()
{
}
Poiché per ogni oggetto di un tipo di classe specifico viene creata un'istanza separata dei dati dei membri non statici, il modo corretto per inizializzare i dati dei membri consiste nell'utilizzare il costruttore della classe. I costruttori vengono illustrate in Costruttori,).
Esiste una sola copia condivisa dei membri dei dati statici per tutti gli oggetti di un tipo di classe specifico. I membri dei dati statici devono essere definiti e possono essere inizializzati in ambito file. Per ulteriori informazioni sui membri di dati statici, vedere Membri di dati statici. Nell'esempio riportato di seguito viene mostrato come eseguire queste inizializzazioni.
// class_members2.cpp
class CanInit
{
public:
CanInit() { l = 7; } // Initializes l when new objects of type
// CanInit are created.
long l;
static int i;
static int j;
};
// i is defined at file scope and initialized to 15.
// The initializer is evaluated in the scope of CanInit.
int CanInit::i = 15;
// The right side of the initializer is in the scope
// of the object being initialized
int CanInit::j = i;
int main()
{
}
Nota
Il nome della classe, CanInit, deve precedere i per specificare che i da definire è un membro della classe CanInit.
Sezione specifica Microsoft
Microsoft C++ consente l'inizializzazione dei membri dati static, const integral e const enum nella definizione di classe. Vedere la pagina relativa alle estensioni Microsoft in C e C++.