logo

Constructeurs par défaut en C++

Un constructeur sans aucun argument ou avec la valeur par défaut pour chaque argument est appelé le Constructeur par défaut .

Un constructeur qui n'a aucune liste de paramètres ou, dans un autre sens, un constructeur qui n'accepte aucun argument est appelé constructeur à zéro argument ou constructeur par défaut.



Si le constructeur par défaut n'est pas défini dans le code source par le programmeur, alors le compilateur a défini implicitement le constructeur par défaut lors de la compilation.

Si le constructeur par défaut est défini explicitement dans le programme par le programmeur, alors le compilateur ne définira pas le constructeur implicitement, mais il appellera le constructeur implicitement.

Quelle est la signification du constructeur par défaut ?



programmation java des nombres premiers

Ils sont utilisés pour créer des objets qui n’ont pas de valeur initiale spécifique.

Un constructeur par défaut est-il automatiquement fourni ?

Si aucun constructeur n'est explicitement déclaré dans la classe, un constructeur par défaut est fourni automatiquement par le compilateur.



Un constructeur par défaut peut-il contenir un argument par défaut ?

Oui, un constructeur peut contenir un argument par défaut avec des valeurs par défaut pour un objet.

Y aura-t-il du code inséré par le compilateur dans le constructeur par défaut implémenté par l'utilisateur en coulisses ?

Le compilateur déclarera implicitement le constructeur par défaut s'il n'est pas fourni par le programmeur et le définira en cas de besoin. Le constructeur par défaut défini par le compilateur est requis pour effectuer certaines initialisations des éléments internes de la classe. Il ne touchera pas les données membres ni les anciens types de données (agrégats comme un tableau, structures, etc…). Cependant, le compilateur génère du code pour le constructeur par défaut en fonction de la situation.

Considérons une classe dérivée d'une autre classe avec le constructeur par défaut, ou une classe contenant un autre objet de classe avec le constructeur par défaut. Le compilateur doit insérer du code pour appeler les constructeurs par défaut de la classe de base/de l'objet incorporé.

C++




// CPP program to demonstrate Default constructors> #include> using> namespace> std;> class> Base {> public>:> >// compiler 'declares' constructor> };> class> A {> public>:> >// User defined constructor> >A() { cout <<>'A Constructor'> << endl; }> >// uninitialized> >int> size;> };> class> B :>public> A {> >// compiler defines default constructor of B, and> >// inserts stub to call A constructor> >// compiler won't initialize any data of A> };> class> C :>public> A {> public>:> >C()> >{> >// User defined default constructor of C> >// Compiler inserts stub to call A's constructor> >cout <<>'C Constructor'> << endl;> >// compiler won't initialize any data of A> >}> };> class> D {> public>:> >D()> >{> >// User defined default constructor of D> >// a - constructor to be called, compiler inserts> >// stub to call A constructor> >cout <<>'D Constructor'> << endl;> >// compiler won't initialize any data of 'a'> >}> private>:> >A a;> };> // Driver Code> int> main()> {> >Base base;> >B b;> >C c;> >D d;> >return> 0;> }>

>

>

Sortir

A Constructor A Constructor C Constructor A Constructor D Constructor>

C++




Example:> #include> using> namespace> std;> class> student> {> >int> rno;> >char> name[50];> >double> fee;> >public>:> >student()>// Explicit Default constructor> >{> >cout<<>'Enter the RollNo:'>;> >cin>>rno;> >cout<<>'Enter the Name:'>;> >cin>>nom;> >cout<<>'Enter the Fee:'>;> >cin>>frais;> >}> > >void> display()> >{> >cout<' '<' '< } }; int main() { student s; s.display(); return 0; }>

>

apprentissage automatique supervisé

>

Il existe différents scénarios dans lesquels le compilateur doit insérer du code pour garantir l'initialisation nécessaire conformément aux exigences du langage. Nous les aurons dans les prochains articles. Notre objectif est de connaître les éléments internes du C++, et de ne pas les utiliser de manière incorrecte.

C++




// CPP code to demonstrate constructor can have default> // arguments> #include> using> namespace> std;> class> A {> public>:> >int> sum = 0;> >A();>// default constructor with no argument> >A(>int> a,>int> x = 0)>// default constructor with one> >// default argument> >{> >sum = a + x;> >}> >void> print() { cout <<>'Sum ='> << sum << endl; }> };> int> main()> {> >// This construct has two arguments. Second argument is> >// initialized with a value of 0 Now we can call the> >// constructor in two possible ways.> >A obj1(10, 20);> >A obj2(5);> >obj1.print();> >obj2.print();> >return> 0;> }>

>

>

Sortir

Sum =30 Sum =5>

Explication : Ici, nous avons un constructeur avec deux paramètres simples et un paramètre par défaut. Maintenant, il existe deux manières d’appeler ce constructeur :

  1. Tout d'abord, nous pouvons attribuer des valeurs aux deux arguments et ces valeurs seront transmises au constructeur et l'argument par défaut x avec la valeur 0 sera remplacé par la valeur transmise lors de l'appel (dans ce cas, 20). Par conséquent, le code donnera une sortie de 30 (comme, somme = a+x, c'est-à-dire 10+20= 30).
  2. La deuxième façon consiste à ne transmettre aucune valeur pour le paramètre par défaut. Si vous le faites, x prendra sa valeur par défaut 0 comme valeur finale et calculera une somme de 5 (comme, somme = a+x, c'est-à-dire 5+0=5).