Membres de classe
Les classes peuvent comprendre ces types de membres :
Classes, qui incluent des classes, des structures, et des unions. (Consultez Déclarations de classe imbriquées et Unions.)
-
Notes
Les friends sont inclus dans la liste précédente parce qu'ils figurent dans la déclaration de classe.Toutefois, ils ne sont pas des membres de classe True, car ils ne sont pas dans la portée de la classe.
Notes
La liste des membres d'une classe peut être divisée en private, protected et les sections public avec les mots clés appelés spécificateurs d'accès. Un signe deux-points : doit suivre le spécificateur d'accès. Ces sections n'ont pas besoin d'être contiguës, autrement aucun de ces mots clés ne peut apparaître plusieurs fois dans la liste des membres. Le mot clé désigne l'accès de tous les membres jusqu'au spécificateur d'accès suivant ou l'accolade fermante.
Les déclarations de membre dans la liste des membres sont séparées par des points-virgules ;. Consultez Syntaxe de déclaration de membre de classe.
Le but de la liste des membres est :
Déclarer l'ensemble complet des membres pour une classe donnée.
Spécifier l'accès (public, privés ou protégé) associé aux différents membres de classe.
Dans la déclaration d'une liste de membres, vous ne pouvez déclarer des membres qu'une seule fois ; le redéclaration de membres fait apparaître un message d'erreur. Comme une liste de membres est un ensemble complet des membres, vous ne pouvez pas ajouter de membres à une classe donnée avec les déclarations de classe suivantes.
Les déclarateurs de membres ne peuvent pas contenir d'initialiseurs. Le fait de fournir un initialiseur fait apparaître un message d'erreur comme illustré dans le code suivant :
// 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()
{
}
Comme une instance distincte de données membres non statique est créée pour chaque objet d'un type de classe donné, la façon correcte d'initialiser des données membres est d'utiliser le constructeur de la classe. (Les constructeurs sont décrits dans Constructeurs,.)
Il n'existe qu'une seule copie partagée des données membres statiques pour tous les objets d'un type de classe donné. Les membres de données statiques doivent être définies et peuvent être initialisées au niveau de la portée du fichier. (Pour plus d'informations sur les membres de données statiques, consultez Membres de données statiques.) L'exemple suivant montre comment effectuer ces initialisations :
// 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()
{
}
Notes
Le nom de classe, CanInit, doit précéder i pour spécifier que le i défini est un membre de classe CanInit.
Section spécifique à Microsoft
Microsoft C++ permet d'initialiser les membres de données statiques, const integral et const enum dans la définition de classe. Consultez Extensions Microsoft dans C et C++.