Constructeur
·
méthode
appelée implicitement à chaque déclaration d'un objet afin de l'initialiser.
·
Il
faut écrire le constructeur
·
Attn
: le constructeur est une méthode publique
Rq : nom-classe = nom-du-constructeur
constructeur inline : Nom-Classe.h
nom-classe(type
param1=valpardéf, type param2=valpardéf) : attr1(param1), attr2(param2) {if (attrX op …) exit(1);}
constructeur
dans le fichier Nom-Classe.C
nom-classe::nom-classe(type
param1=valpardéf, type param2=valpardéf) : attr1(param1), attr2(param2)
{if (attrX op …) exit(1);}
On peut alors faire les déclarations d'objet suivantes :
nom-classe nom-objet( );
nom-classe nom-objet(val);
nom-classe
nom-objet(val1,val2);
CLASSE(const
CLASSE &objet);
· passage d'un objet-paramètre par valeur : une copie est créée
Þ paramètre du CPR en référence (sinon appel au CPR)
· construire un objet à partir d'un objet de la même classe
CLASSE objetCréé(objetExistant);
Û
CLASSE objetCréé = objetExistant;
Il existe un constructeur par recopie par défaut
Þ redéfinir le CPR que si recopie + traitement supplémentaire
Û redéfinir aussi l'opérateur d'affectation
objet1 =
objet2;
* est opérateur d'affectation que si les 2 objets existent déjà
* sinon : appel du CPR (objet2 existe déjà)
Il existe un opérateur d'affectation par défaut (=)
Attn qd objet1=objet1;
objetExistant =
CLASSE (…);
® construction objet temporaire (…)
® opérateur d'affectation
CLASSE NouvelObjet
= objetExistant;
® appel CPR
objetExistant1 = objetExistant2;
® opérateur d'affectation
Exception :
CLASSE objet =CLASSE
(…); Û CLASSE
objet(…);
|
Construire un objet à partir d'un autre objet |
même classe |
classe ¹ |
|
® CPR et opérateur d'affectation |
®
ZIC ®
constructeur avec val par déf ®
constructeur sans paramètres |
▪ CPR et opérateur d'affectation
class CLASSE
{ AUTRECLASSE
objet_membre;
public :
CLASSE(…….); //constructeur
…
}
Objet membre = objet d'une autre classe, attribut privé de la classe
AUTRECLASSE::AUTRECLASSE( );
AUTRECLASSE::AUTRECLASSE (val
par déf…);
Attn : permet des conversions implicites !!!