Partager via


Initialisation des objets membres

Les classes peuvent contenir des objets membres de type de classe, mais pour garantir que les spécifications d'initialisation pour les objets membres sont respectées, une des conditions suivantes doit être remplie :

  • La classe de l'objet contenu ne requiert pas de constructeur.

  • La classe de l'objet contenu a un constructeur par défaut accessible.

  • Les constructeurs de la classe conteneur initialisent tous explicitement l'objet contenu.

L'exemple suivant montre comment effectuer ce type d'initialisation :

// spec1_initializing_member_objects.cpp
// Declare a class Point.
class Point
{
public:
    Point( int x, int y ) { _x = x; _y = y; }
private:
    int _x, _y;
};

// Declare a rectangle class that contains objects of type Point.
class Rect
{
public:
    Rect( int x1, int y1, int x2, int y2 );
private:
    Point _topleft, _bottomright;
};

//  Define the constructor for class Rect. This constructor
//   explicitly initializes the objects of type Point.
Rect::Rect( int x1, int y1, int x2, int y2 ) :
_topleft( x1, y1 ), _bottomright( x2, y2 )
{
}

int main()
{
}

La classe Rect, illustrée dans l'exemple précédent, contient deux objets membres de classe Point. Son constructeur initialise explicitement les objets _topleft et _bottomright. Notez qu'un signe deux-points suit la parenthèse fermante du constructeur (dans la définition). Ce signe est suivi des noms de membre et des arguments avec lesquels initialiser les objets de type Point.

Notes

L'ordre dans lequel les initialiseurs de membres sont spécifiés dans le constructeur n'a aucune incidence sur l'ordre dans lequel les membres sont construits ; les membres sont construits dans l'ordre dans lequel ils sont déclarés dans la classe.

La référence et les objets membres const doivent être initialisés à l'aide de la syntaxe d'initialisation de membres représentée dans la section Grammaire dans Initialisation des bases et des membres. Il n'existe aucune autre façon d'initialiser ces objets.

Voir aussi

Référence

Initialisation des bases et des membres