Constructeur implicite

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Constructeurs - Index

Le constructeur implicite de la class est un constructeur qui n'accepte aucun argument et dont la notation est généralement X::X(). S'il n'existe aucun constructeur défini par l'utilisateur pour une classe, le compilateur génère un constructeur implicite. Dans une déclaration comme X x, le constructeur implicite crée l'objet x.

Comme toutes les fonctions, les constructeurs ont des arguments implicites. Par exemple, le constructeur

X::X(int, int = 0)

peut prendre un ou deux arguments. Lorsqu'il est écrit avec un seul argument, le deuxième est supposé être un int nul. De même, le constructeur


X::X(int = 5, int = 6)

pourrait prendre un ou deux arguments, ou aucun, avec des valeurs par défaut appropriées. Cependant, le constructeur implicite X::X() n'accepte aucun argument et ne doit pas être confondu avec par exemple X::X(int = 0) qui peut être appelé sans argument comme un constructeur implicite, ou peut prendre un argument.

Evitez toute ambiguïté lors de l'appel des constructeurs. Dans le cas suivant, les deux constructeurs implicites sont ambigus :


class X
{
public:
   X();
   X(int i = 0);
};
int main()
{
   X one(10);  // OK; uses X::X(int)
   X two;      // Error;ambiguous whether to call X::X() or
               // X::X(int = 0)
   return 0;
}

Voir aussi