Konstruktorius C++ kalba yra specialus metodas, kuris automatiškai iškviečiamas kuriant objektą. Jis paprastai naudojamas naujų objektų duomenų nariams inicijuoti. C++ konstruktorius turi tą patį pavadinimą kaip klasė arba struktūra. Jis sukuria reikšmes, ty pateikia duomenis apie objektą, todėl jis žinomas kaip konstruktorius.
- Konstruktorius yra klasės nario funkcija, kurios pavadinimas yra toks pat kaip klasės pavadinimas.
- Konstruktorius yra specialus nario funkcijos tipas, kuris naudojamas automatiškai inicijuoti klasės objekto duomenų narius, kai sukuriamas tos pačios klasės objektas.
- Konstruktorius iškviečiamas objekto kūrimo metu. Jis sukuria reikšmes, ty pateikia duomenis apie objektą, todėl jis žinomas kaip konstruktorius.
- Konstruktoriai negrąžina vertės, todėl neturi grąžinimo tipo.
- Konstruktorius iškviečiamas automatiškai, kai sukuriame klasės objektą.
- Konstruktoriai gali būti perkrauti.
- Konstruktorius negali būti paskelbtas virtualiu.
Konstruktorių sintaksė C++
Konstruktoriaus prototipas atrodo taip:
(list-of-parameters);>
Konstruktorius gali būti apibrėžtas klasės deklaracijoje arba už klasės deklaracijos ribų
Sintaksė, skirta apibrėžti konstruktorių klasėje
(list-of-parameters) { // constructor definition }> Sintaksė, skirta konstruktoriaus apibrėžimui už klasės ribų
: :(list-of-parameters) { // constructor definition }> C++ konstruktorių pavyzdžiai
Toliau pateikti pavyzdžiai parodo, kaip deklaruoti klasės konstruktorius C++:
1 pavyzdys: konstruktoriaus apibrėžimas klasėje
C++
mesti eilutę kaip int java
// defining the constructor within the class> #include> using> namespace> std;> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >// constructor> >student()> >{> >cout <<>'Enter the RollNo:'>;> >cin>>rno;> >cout <<>'Enter the Name:'>;> >cin>> vardas;> >cout <<>'Enter the Fee:'>;> >cin>> mokestis;> >}> >void> display()> >{> >cout << endl << rno <<>' '> << name <<>' '> << fee;> >}> };> int> main()> {> >student s;>// constructor gets called automatically when> >// we create the object of the class> >s.display();> >return> 0;> }> |
>
>
Išvestis
Enter the RollNo:121 Enter the Name:Geeks Enter the Fee:5000 121 Geeks 5000>
2 pavyzdys: konstruktoriaus apibrėžimas už klasės ribų
C++
// defining the constructor outside the class> #include> using> namespace> std;> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >// constructor declaration only> >student();> >void> display();> };> // outside definition of constructor> student::student()> {> >cout <<>'Enter the RollNo:'>;> >cin>>rno;> >cout <<>'Enter the Name:'>;> >cin>> vardas;> >cout <<>'Enter the Fee:'>;> >cin>> mokestis;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> // driver code> int> main()> {> >student s;> >s.display();> >return> 0;> }> |
>
>
Išvestis
Enter the RollNo:11 Enter the Name:Aman Enter the Fee:10111 11 Aman 10111>
Pastaba: Konstruktorių galime apibrėžti už klasės ribų kaip eilutę kad jis atitiktų klasės apibrėžimą. Bet atkreipkite dėmesį į tai eilutę nėra nurodymas kompiliatoriui, tai tik užklausa, kurią kompiliatorius gali įgyvendinti arba neįgyvendinti, priklausomai nuo aplinkybių.
C++ konstruktorių charakteristikos
Toliau pateikiamos kelios pagrindinės C++ konstruktorių charakteristikos:
- Konstruktoriaus pavadinimas yra toks pat kaip ir jo klasės pavadinimas.
- Konstruktoriai dažniausiai deklaruojami viešoje klasės dalyje, nors jie gali būti deklaruojami ir privačioje klasės dalyje.
- Konstruktoriai reikšmių negrąžina; taigi jie neturi grąžinimo tipo.
- Konstruktorius iškviečiamas automatiškai, kai sukuriame klasės objektą.
- Konstruktoriai gali būti perkrauti.
- Konstruktorius negali būti paskelbtas virtualiu.
- Konstruktorius negali būti paveldimas.
- Konstruktorių adresai negali būti nurodyti.
- Konstruktorius netiesiogiai iškviečia naujas ir Ištrinti operatoriai atminties paskirstymo metu.
Konstruktorių tipai C++
Konstruktoriai gali būti klasifikuojami pagal tai, kokiose situacijose jie naudojami. C++ kalboje yra 4 konstruktorių tipai:
- Numatytasis konstruktorius
- Parametrizuotas konstruktorius
- Kopijavimo konstruktorius
- Perkelti konstruktorių
Supraskime C++ konstruktorių tipus paimdami realų pavyzdį. Tarkime, nuėjote į parduotuvę nusipirkti žymeklio. Kokios yra pasirinkimo galimybės, kai norite įsigyti žymeklį? Pirmas, kai nueini į parduotuvę ir sakai, duok man žymeklį. Taigi vien pasakymas „duokite man žymeklį“ reiškia, kad jūs nenustatėte prekės ženklo ir kokios spalvos, nieko nepaminėjote, tiesiog pasakėte, kad norite žymeklio. Taigi, kai pasakėme, kad aš noriu žymeklio, nesvarbu, koks dažnai parduodamas žymeklis yra turguje ar jo parduotuvėje, jis tiesiog jį perduos. Ir štai kas yra numatytasis konstruktorius!
Antrasis būdas yra nueiti į parduotuvę ir pasakyti, kad noriu raudonos spalvos žymeklio ir XYZ prekės ženklo. Taigi jūs paminėjote tai ir jis jums duos tą žymeklį. Taigi šiuo atveju nurodėte parametrus. Ir štai kas yra parametrizuotas konstruktorius!
Tada trečią kartą nueini į parduotuvę ir sakai, kad noriu tokio žymeklio (fizinio žymeklio ant tavo rankos). Taigi pardavėjas matys tą žymeklį. Gerai, ir jis duos tau naują žymeklį. Taigi to žymeklio kopija. Ir štai kas yra kopijų konstruktorius!
Dabar manykite, kad neperkate naujo žymeklio, o perimate savo draugo žymeklį. Tai reiškia, kad perimti nuosavybę už jau esamus išteklius, o ne gauti naujų. Štai kas yra judėjimo konstruktorius!
1. Numatytasis konstruktorius C++
A numatytasis konstruktorius yra konstruktorius, kuris nepriima jokių argumentų. Jis neturi jokių parametrų. Jis taip pat vadinamas nulinio argumento konstruktoriumi.
Numatytosios konstruktoriaus sintaksė
className() { // body_of_constructor }> Numatytosios konstruktoriaus pavyzdžiai
Toliau pateikti pavyzdžiai parodo, kaip naudoti numatytuosius C++ konstruktorius.
1 pavyzdys:
CPP
// C++ program to illustrate the concept of default> // constructors> #include> using> namespace> std;> class> construct {> public>:> >int> a, b;> >// Default Constructor> >construct()> >{> >a = 10;> >b = 20;> >}> };> int> main()> {> >// Default constructor called automatically> >// when the object is created> >construct c;> >cout <<>'a: '> << c.a << endl <<>'b: '> << c.b;> >return> 1;> }> |
>
>Išvestis
a: 10 b: 20>
Pastaba: Net jei aiškiai neapibrėžiame jokio konstruktoriaus, kompiliatorius automatiškai netiesiogiai pateiks numatytąjį konstruktorių.
2 pavyzdys:
C++
// C++ program to demonstrate the implicit default> // constructor> #include> using> namespace> std;> // class> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> };> int> main()> {> >// creating object without any parameters> >student s;> >return> 0;> }> |
>
>
Išvestis
(no output)>
Kaip matome, klasės mokinio objektas gali būti sukurtas neperduodant jokio argumento, net jei nesame apibrėžę jokio aiškaus numatytojo konstruktoriaus.
2. Parametrizuotas konstruktorius C++ kalboje
Parametrizuoti konstruktoriai suteikia galimybę konstruktoriams perduoti argumentus. Paprastai šie argumentai padeda inicijuoti objektą, kai jis sukuriamas. Norėdami sukurti parametrizuotą konstruktorių, tiesiog pridėkite prie jo parametrus taip, kaip pridėtumėte prie bet kurios kitos funkcijos. Kai apibrėžiate konstruktoriaus kūną, naudokite parametrus objektui inicijuoti.
Parametrizuoto konstruktoriaus sintaksė
className (parameters...) { // body }> Parametrizuoto konstruktoriaus pavyzdžiai
Toliau pateikti pavyzdžiai parodo, kaip naudoti parametrinius konstruktorius C++.
1 pavyzdys: Parametrizuoto konstruktoriaus apibrėžimas klasėje.
CPP
// CPP program to illustrate parameterized constructors> #include> using> namespace> std;> class> Point {> private>:> >int> x, y;> public>:> >// Parameterized Constructor> >Point(>int> x1,>int> y1)> >{> >x = x1;> >y = y1;> >}> >int> getX() {>return> x; }> >int> getY() {>return> y; }> };> int> main()> {> >// Constructor called> >Point p1(10, 15);> >// Access values assigned by constructor> >cout <<>'p1.x = '> << p1.getX()> ><<>', p1.y = '> << p1.getY();> >return> 0;> }> |
>
>Išvestis
p1.x = 10, p1.y = 15>
2 pavyzdys: Parametrizuoto konstruktoriaus apibrėžimas už klasės ribų.
C++
mysql sąrašo vartotojai
// C++ Program to illustrate how to define the parameterized> // constructor outside the class> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int>,>char>[],>double>);> >void> display();> };> // parameterized constructor outside class> student::student(>int> no,>char> n[],>double> f)> {> >rno = no;> >strcpy>(name, n);> >fee = f;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> // driver code> int> main()> {> >student s(1001,>'Ram'>, 10000);> >s.display();> >return> 0;> }> |
>
>Išvestis
1001 Ram 10000>
Kai objektas deklaruojamas parametrizuotame konstruktoriuje, pradinės reikšmės turi būti perduodamos kaip argumentai konstruktoriaus funkcijai. Įprastas objekto deklaravimo būdas gali neveikti. Konstruktoriai su parametrais gali būti vadinami tiesiogiai arba netiesiogiai:
Example e = Example(0, 50); // Explicit call Example e(0, 50); // Implicit call>
Kai parametrizuotas konstruktorius yra apibrėžtas, o numatytasis konstruktorius nėra aiškiai apibrėžtas, kompiliatorius netiesiogiai nesukurs numatytojo konstruktoriaus ir nesukurs paprasto objekto kaip:
Student s;>
mirksi klaida.
3 pavyzdys:
C++
// C++ Program to illustrate the error caused be not> // defining the explicit defualt constructor after> // parameterized constructor> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int> no,>char> n[],>double> f)> >{> >rno = no;> >strcpy>(name, n);> >fee = f;> >}> };> // driver code> int> main()> {> >student s;>// this will cause error> >return> 0;> }> |
>
>
kaip konvertuoti int į java eilutę
Išvestis
main.cpp: In function ‘int main()’: main.cpp:25:13: error: no matching function for call to ‘student::student()’ 25 | student s; // this will cause error | ^ main.cpp:14:5: note: candidate: ‘student::student(int, char*, double)’ 14 | student(int no, char n[], double f) | ^~~~~~~ main.cpp:14:5: note: candidate expects 3 arguments, 0 provided main.cpp:8:7: note: candidate: ‘constexpr student::student(const student&)’ 8 | class student { | ^~~~~~~ main.cpp:8:7: note: candidate expects 1 argument, 0 provided main.cpp:8:7: note: candidate: ‘constexpr student::student(student&&)’ main.cpp:8:7: note: candidate expects 1 argument, 0 provided ^~> Svarbi pastaba: Kai apibrėžiame vieną ar daugiau nenumatytųjų klasės konstruktorių (su parametrais), numatytasis konstruktorius (be parametrų) taip pat turėtų būti aiškiai apibrėžtas, nes tokiu atveju kompiliatorius nepateiks numatytojo konstruktoriaus. Tačiau nebūtina, bet geriausia praktika visada apibrėžti numatytąjį konstruktorių.
Parametrizuoto konstruktoriaus naudojimas
- Jis naudojamas inicijuoti įvairius skirtingų objektų duomenų elementus su skirtingomis reikšmėmis, kai jie sukuriami.
- Jis naudojamas konstruktoriams perkrauti.
Numatytieji argumentai su C++ parametrizuotu konstruktoriumi
Kaip ir įprastos funkcijos, taip pat galime apibrėžti numatytąsias parametruotų konstruktorių argumentų reikšmes. Visos taisyklės numatytieji argumentai bus taikomi šiems parametrams.
3 pavyzdys: Parametrizuoto konstruktoriaus su numatytosiomis reikšmėmis apibrėžimas
C++
// C++ Program to illustrate how to use default arguments> // with parameterized constructor> #include> using> namespace> std;> // class> class> GFG {> private>:> >int> data;> public>:> >// parameterized constructor with default values> >GFG(>int> x = 0) { data = x; }> >int> getData() {>return> data; }> };> int> main()> {> >GFG obj1;>// will not throw error> >GFG obj2(25);> >cout <<>'First Object Data: '> << obj1.getData() << endl;> >cout <<>'Second Object Data: '> << obj2.getData()> ><< endl;> >return> 0;> }> |
>
>Išvestis
First Object Data: 0 Second Object Data: 25>
Kaip matome, kai kiekvienam parametrizuoto konstruktoriaus argumentui priskiriamos numatytosios reikšmės, galima sukurti objektą neperduodant jokių parametrų, kaip ir numatytieji konstruktoriai. Taigi, šio tipo konstruktorius veikia ir kaip numatytasis, ir kaip parametrizuotas konstruktorius.
3. Nukopijuokite Constructor į C++
Kopijavimo konstruktorius yra nario funkcija, kuri inicijuoja objektą naudojant kitą tos pačios klasės objektą.
Sintaksė iš Kopijavimo konstruktorius
Kopijavimo konstruktorius kaip argumentą laiko nuorodą į tos pačios klasės objektą.
ClassName (ClassName &obj) { // body_containing_logic }> Kaip ir numatytasis konstruktorius, C++ kompiliatorius taip pat pateikia numanomą kopijos konstruktorių, jei nėra aiškaus kopijos konstruktoriaus apibrėžimo. Čia reikia pažymėti, kad skirtingai nuo numatytojo konstruktoriaus, kai dėl bet kokio tipo aiškaus konstruktoriaus pašalinamas numanomas numatytasis konstruktorius, numanomos kopijos konstruktorių visada sukurs kompiliatorius, jei nėra aiškios kopijos konstruktoriaus. arba yra aiškus judėjimo konstruktorius.
Copy Constructor pavyzdžiai
Toliau pateikti pavyzdžiai parodo, kaip naudoti kopijavimo konstruktorius C++.
1 pavyzdys: Implicit Copy Constructor iliustracija
C++
// C++ program to illustrate the use of Implicit copy> // constructor> #include> using> namespace> std;> class> Sample {> >int> id;> public>:> >// parameterized constructor> >Sample(>int> x) { id = x; }> >void> display() { cout <<>'ID='> << id; }> };> int> main()> {> >Sample obj1(10);> >obj1.display();> >cout << endl;> >// creating an object of type Sample from the obj> >Sample obj2(obj1);>// or obj2=obj1;> >obj2.display();> >return> 0;> }> |
>
>Išvestis
ID=10 ID=10>
2 pavyzdys: aiškios kopijos konstruktoriaus apibrėžimas
C++
eol python
// C++ Program to demonstrate how to define the explicit> // copy constructor> #include> using> namespace> std;> class> Sample {> >int> id;> public>:> >// default constructor with empty body> >Sample() {}> >// parameterized constructor> >Sample(>int> x) { id = x; }> >// copy constructor> >Sample(Sample& t) { id = t.id; }> >void> display() { cout <<>'ID='> << id; }> };> // driver code> int> main()> {> >Sample obj1(10);> >obj1.display();> >cout << endl;> >// copy constructor called> >Sample obj2(obj1);>// or obj2=obj1;> >obj2.display();> >return> 0;> }> |
>
>Išvestis
ID=10 ID=10>
3 pavyzdys: Aiškios kopijos konstruktoriaus apibrėžimas naudojant parametrizuotą konstruktorių
C++
// C++ program to demonstrate copy construction along with> // parameterized constructor> #include> #include> using> namespace> std;> // class definition> class> student {> >int> rno;> >char> name[50];> >double> fee;> public>:> >student(>int>,>char>[],>double>);> >student(student& t)>// copy constructor> >{> >rno = t.rno;> >strcpy>(name, t.name);> >fee = t.fee;> >}> >void> display();> };> student::student(>int> no,>char> n[],>double> f)> {> >rno = no;> >strcpy>(name, n);> >fee = f;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> int> main()> {> >student s(1001,>'Manjeet'>, 10000);> >s.display();> >student manjeet(s);>// copy constructor called> >manjeet.display();> >return> 0;> }> |
>
>Išvestis
1001 Manjeet 10000 1001 Manjeet 10000>
„Copy Constructor“ naudojimas
- Sukuria naują objektą, nukopijuodamas reikšmes iš esamo objekto.
- Galima naudoti giliajam kopijavimui atlikti.
- Jei reikia, kopijavimo proceso metu pakeiskite konkrečius atributus.
4. Perkelkite konstruktorių į C++
Perkėlimo konstruktorius yra neseniai C++ konstruktorių šeimos papildymas. Tai tarsi kopijavimo konstruktorius, kuris sukonstruoja objektą iš jau esamų objektų. Tačiau užuot nukopijavęs objektą į naują atmintį, jis naudoja judėjimo semantiką, kad perduotų nuosavybės teisę į jau sukurtą objektą naujam objektui, nesukurdamas papildomo. kopijų.
Tai gali būti vertinama kaip išteklių vagystė iš kitų objektų.
Move Constructor sintaksė C++
className (className&& obj) { // body of the constructor }> The perkelti konstruktorius paima rvertės nuoroda tos pačios klasės objekto ir perduoda nuosavybės teisę į šį objektą naujai kuriamam objektui.
Kaip ir kopijavimo konstruktorius, kompiliatorius sukurs perkėlimo konstruktorių kiekvienai klasei, kuri neturi jokio aiškaus perkėlimo konstruktoriaus.
Move Constructor pavyzdžiai
Toliau pateikti pavyzdžiai parodo, kaip naudoti perkėlimo konstruktorius C++.
1 pavyzdys: Move Constructor apibrėžimas
C++
// C++ Program to illustrate how to define a move> // constructor> #include> using> namespace> std;> class> Box {> public>:> >int>* data;>// Pointer to an integer value> >// Constructor> >Box(>int> value)> >{> >data =>new> int>;> >*data = value;> >}> >// Move constructor> >Box(Box&& other) noexcept> >{> >cout <<>'Move Constructor Called'> << endl;> >data = other.data;>// Transfer ownership of 'other'> >// data> >other.data = nullptr;>// Null out 'other' to prevent> >// double deletion> >}> >// Destructor> >~Box() {>delete> data; }> };> int> main()> {> >// Create a Box with value 42> >Box originalBox(42);> >// Create a new Box by moving resources from the> >// originalBox> >Box newBox(move(originalBox));> >cout <<>'newBox.data: '> << *newBox.data;> >// originalBox is now in a valid but unspecified> >// state (its resources were moved to newBox)> >return> 0;> }> |
>
>Išvestis
Linux klaidų kodai
Move Constructor Called newBox.data: 42>
„Move Constructor“ naudojimas
- Užuot darę kopijas, perkėlimo konstruktoriai efektyviai perduoda šių išteklių nuosavybės teisę.
- Taip išvengiama nereikalingo atminties kopijavimo ir sumažinamos papildomos išlaidos.
- Galite apibrėžti savo perkėlimo konstruktorių, kad galėtumėte valdyti konkrečius išteklių perkėlimus.
Destruktoriai C++
Destruktorius taip pat yra speciali konstruktoriaus nario funkcija. Destruktorius sunaikina konstruktoriaus sukurtus klasės objektus. Destructor turi tokį patį pavadinimą kaip ir jų klasės pavadinimas, prieš kurį rašomas tildės (~) simbolis. Neįmanoma apibrėžti daugiau nei vieno destruktoriaus. Destruktorius yra tik vienas iš būdų sunaikinti konstruktoriaus sukurtą objektą. Taigi naikintojas negali būti perkrautas. Destructor nereikalauja jokių argumentų ir nepateikia jokios reikšmės. Jis automatiškai iškviečiamas, kai objektas išeina iš taikymo srities. Destruktoriai atlaisvina atminties erdvę, kurią užima konstruktoriaus sukurti objektai. Į naikintojas , objektai sunaikinami atvirkščiai objekto kūrimui.
Destruktorių sintaksė C++
Kaip ir konstruktoriai, destruktoriai taip pat gali būti apibrėžti klasės viduje arba išorėje.
Sintaksė, skirta apibrėžti destruktorių klasėje
~ (){}> Sintaksė, skirta destruktoriui apibrėžti už klasės ribų
: : ~(){}> Destruktorių pavyzdžiai C++
Žemiau pateikti pavyzdžiai parodo, kaip naudoti destruktorius C++.
1 pavyzdys: paprasto destruktoriaus apibrėžimas
C++
#include> using> namespace> std;> class> Test {> public>:> >Test() { cout <<>'
Constructor executed'>; }> >~Test() { cout <<>'
Destructor executed'>; }> };> main()> {> >Test t;> >return> 0;> }> |
>
>Išvestis
Constructor executed Destructor executed>
2 pavyzdys: Objekto sukūrimo ir sunaikinimo kartų skaičiavimas
C++
// C++ Program to count the number of objects created and> // destroyed> #include> using> namespace> std;> // global variable to count> int> count = 0;> // class definition> class> Test {> public>:> >Test()> >{> >count++;> >cout <<>'No. of Object created: '> << count << endl;> >}> >~Test()> >{> >cout <<>'No. of Object destroyed: '> << count> ><< endl;> >--count;> >}> };> // driver code> int> main()> {> >Test t, t1, t2, t3;> >return> 0;> }> |
>
>
Išvestis
No. of Object created: 1 No. of Object created: 2 No. of Object created: 3 No. of Object created: 4 No. of Object destroyed: 4 No. of Object destroyed: 3 No. of Object destroyed: 2 No. of Object destroyed: 1>
C++ destruktorių charakteristikos
Toliau pateikiamos kelios pagrindinės C++ destruktorių charakteristikos:
- Kompiliatorius automatiškai iškviečia „Destructor“, kai atitinkamas konstruktorius išeina iš taikymo srities ir atlaisvina atminties vietą, kurios programai nebereikia.
- Destruktorius nereikalauja jokių argumentų ir nepateikia jokios reikšmės, todėl jo negalima perkrauti.
- Destruktorius negali būti paskelbtas statiniu ir const;
- Destruktorius turėtų būti paskelbtas viešoje programos dalyje.
- Destruktorius iškviečiamas atvirkštine jo konstruktoriaus iškvietimo tvarka.
Dažnai užduodami klausimai apie C++ konstruktorius
Kokios yra funkcijos, kurias pagal numatytuosius nustatymus generuoja kompiliatorius, jei mes jų aiškiai nepateikiame?
Funkcijos, kurias pagal numatytuosius nustatymus generuoja kompiliatorius, jei mes jų nepateikiame, yra šios:
- Numatytasis konstruktorius
- Kopijavimo konstruktorius
- Perkelti konstruktorius
- Užduočių operatorius
- Naikintojas
Ar galime padaryti konstruktorius privačius?
Taip, C++, konstruktoriai gali būti privatūs. Tai reiškia, kad joks išorinis kodas negali tiesiogiai sukurti tos klasės objekto.
Kuo konstruktoriai skiriasi nuo įprastų narių funkcijų?
Konstruktorius nuo įprastų funkcijų skiriasi šiais būdais:
- Konstruktorius turi tą patį pavadinimą kaip ir pati klasė
- Tačiau numatytieji konstruktoriai neturi įvesties argumentų, o kopijavimo ir parametrizuoti konstruktoriai turi įvesties argumentus
- Konstruktoriai neturi grąžinimo tipo
- Konstruktorius automatiškai iškviečiamas, kai sukuriamas objektas.
- Jis turi būti patalpintas viešoje klasės dalyje.
- Jei nenurodome konstruktoriaus, C++ kompiliatorius sugeneruoja numatytąjį objekto konstruktorių (netiki jokių parametrų ir turi tuščią turinį).
Ar klasėje galime turėti daugiau nei vieną konstruktorių?
Taip, klasėje galime turėti daugiau nei vieną konstruktorių. Tai vadinama Konstruktoriaus perkrova .
Susiję straipsniai:
- Destruktoriai C++
- Viktorina apie konstruktorius C++
- C++ programų išvestis | 26 rinkinys (konstruktoriai)
- C++ programų išvestis | 27 rinkinys (konstruktoriai ir naikintojai)