« Programmation C++/Les classes » : différence entre les versions
→Constructeurs
(typo) |
|||
* Lorsqu'on crée une nouvelle instance d'une classe, les données membres de cette instance ne sont pas initialisées par défaut. Un constructeur est une fonction membre qui sera appelée au moment de la création d'une nouvelle instance d'une classe. Il peut y avoir plusieurs constructeurs d'une classe avec différents paramètres qui serviront à initialiser notre classe. Le constructeur d'une classe A est appelé automatiquement lorsqu'on crée une instance en écrivant : ''A toto;'' ou encore ''A toto(6,9);''. Ils sont également appelés lorsqu'une instance est créée grâce à l'opérateur <code>new</code>.
* Parmi les constructeurs, on retrouve une série de constructeurs particuliers:
** Le '''constructeur par défaut''' : c'est le constructeur sans argument. Si aucun constructeur n'est présent explicitement dans la classe, il est généré par le compilateur.
** Le '''constructeur de copie''' : c'est un constructeur à un argument dont le type est celui de la classe. En général, l'argument est passé par référence constante. Plus rarement, il peut l'être par valeur ou référence non constante. Si il n'est pas explicitement présent dans la classe, il est généré par le compilateur. Notons encore que:
*** Si un constructeur de copie est fourni dans une classe, il sera très probable de devoir fournir l'opérateur d'assignation avec le même type d'argument.
*** Il est possible de rendre une classe non copiable en privatisant la déclaration du constructeur de copie et de l'opérateur d'assignation. Dans ce cas, il n'est pas nécessaire (recommandé) de fournir leur définition.
** Les '''constructeurs de conversion implicite''' : il s'agit de constructeurs à un seul argument dont le type est différent de celui de la classe et qui ne sont pas déclarés ''explicit''. Ces constructeurs rendent possible la conversion implicte du type d'argument vers le type de la classe.
* '''Syntaxe :''' ''(Pour une classe A)''
** A(); ''// constructeur par défaut''
|