logo

Konstruktori valodā C++

Konstruktors C++ valodā ir īpaša metode, kas tiek automātiski izsaukta objekta izveides laikā. To izmanto, lai vispārīgi inicializētu jaunu objektu datu dalībniekus. C++ konstruktoram ir tāds pats nosaukums kā klasei vai struktūrai. Tas konstruē vērtības, t.i., nodrošina datus par objektu, tāpēc tas ir pazīstams kā konstruktors.

  • Konstruktors ir klases dalībnieka funkcija, kuras nosaukums ir tāds pats kā klases nosaukumam.
  • Konstruktors ir īpaša veida elementu funkcija, ko izmanto, lai automātiski inicializētu klases objekta datu elementus, kad tiek izveidots tās pašas klases objekts.
  • Konstruktors tiek izsaukts objekta izveides laikā. Tas konstruē vērtības, t.i., nodrošina datus par objektu, tāpēc tas ir pazīstams kā konstruktors.
  • Konstruktori neatgriež vērtību, tāpēc tiem nav atgriešanas veida.
  • Konstruktors tiek izsaukts automātiski, kad mēs veidojam klases objektu.
  • Konstruktori var būt pārslogoti.
  • Konstruktoru nevar pasludināt par virtuālu.

Konstruktoru sintakse valodā C++

Konstruktora prototips izskatās šādi:

 (list-of-parameters);>

Konstruktoru var definēt klases deklarācijā vai ārpus klases deklarācijas



Sintakse konstruktora definēšanai klasē

 (list-of-parameters) {     // constructor definition  }>

Sintakse konstruktora definēšanai ārpus klases

: :(list-of-parameters) {    // constructor definition  }>

C++ konstruktoru piemēri

Tālāk sniegtie piemēri parāda, kā deklarēt klases konstruktorus C++ valodā:

1. piemērs: Konstruktora definēšana klasē

C++




// 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>> nosaukums;> >cout <<>'Enter the Fee:'>;> >cin>> maksa;> >}> >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;> }>

>

>

Izvade

Enter the RollNo:121 Enter the Name:Geeks Enter the Fee:5000 121 Geeks 5000>

2. piemērs: Konstruktora definēšana ārpus klases

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>> nosaukums;> >cout <<>'Enter the Fee:'>;> >cin>> maksa;> }> void> student::display()> {> >cout << endl << rno <<>' '> << name <<>' '> << fee;> }> // driver code> int> main()> {> >student s;> >s.display();> >return> 0;> }>

>

>

Izvade

Enter the RollNo:11 Enter the Name:Aman Enter the Fee:10111 11 Aman 10111>

Piezīme: Mēs varam definēt konstruktoru ārpus klases kā rindā lai padarītu to līdzvērtīgu definīcijai klasē. Bet ņemiet vērā to rindā nav norādījums kompilatoram, tas ir tikai pieprasījums, kuru kompilators var vai nevar īstenot atkarībā no apstākļiem.

C++ konstruktoru raksturojums

Tālāk ir norādītas dažas galvenās C++ konstruktoru īpašības:

  • Konstruktora nosaukums ir tāds pats kā klases nosaukums.
  • Konstruktori galvenokārt tiek deklarēti klases publiskajā sadaļā, lai gan tos var deklarēt klases privātajā sadaļā.
  • Konstruktori vērtības neatgriež; tāpēc tiem nav atgriešanas veida.
  • Konstruktors tiek izsaukts automātiski, kad mēs veidojam klases objektu.
  • Konstruktori var būt pārslogoti.
  • Konstruktoru nevar pasludināt par virtuālu.
  • Konstruktors nevar tikt mantots.
  • Nevar atsaukties uz Konstruktora adresēm.
  • Konstruktors veic netiešus izsaukumus uz jauns un dzēst operatori atmiņas piešķiršanas laikā.

Konstruktoru veidi programmā C++

Konstruktorus var klasificēt atkarībā no tā, kādās situācijās tie tiek izmantoti. Programmā C++ ir 4 veidu konstruktori:

  1. Noklusējuma konstruktors
  2. Parametrizēts konstruktors
  3. Kopēšanas konstruktors
  4. Pārvietot konstruktoru

Ļaujiet mums saprast C++ konstruktoru veidus, izmantojot reālu piemēru. Pieņemsim, ka esat devies uz veikalu, lai nopirktu marķieri. Kad vēlaties iegādāties marķieri, kādas ir iespējas? Pirmais, ko tu aizej uz veikalu un saki, iedod man marķieri. Tātad tas, ka pasakāt, dodiet man marķieri, nozīmē, ka jūs neesat iestatījis, kura zīmola nosaukumu un krāsu, jūs neko neminējāt, vienkārši sakāt, ka vēlaties marķieri. Tātad, kad mēs vienkārši teicām, ka es vēlos marķieri neatkarīgi no bieži pārdotā marķiera, kas atrodas tirgū vai viņa veikalā, viņš to vienkārši nodos. Un tas ir noklusējuma konstruktors!

Otrā metode ir: jūs dodaties uz veikalu un sakāt, ka es vēlos marķieri sarkanā krāsā un XYZ zīmolu. Tātad jūs to pieminējat, un viņš jums iedos šo marķieri. Tātad šajā gadījumā jūs esat norādījis parametrus. Un tāds ir parametrizēts konstruktors!

Pēc tam trešā, jūs dodaties uz veikalu un sakāt, ka es gribu šādu marķieri (fizisku marķieri uz jūsu rokas). Tātad veikalnieks redzēs šo marķieri. Labi, un viņš jums iedos jaunu marķieri. Tātad šī marķiera kopija. Un tas ir kopiju konstruktors!

Tagad pieņemsim, ka nepērkat jaunu marķieri, bet gan pārņemat sava drauga marķieri. Tas nozīmē uzņemties īpašumtiesības uz jau esošajiem resursiem, nevis iegūt jaunus. Lūk, kas ir kustību konstruktors!

1. Noklusējuma konstruktors programmā C++

A noklusējuma konstruktors ir konstruktors, kas neņem vērā nevienu argumentu. Tam nav parametru. To sauc arī par nulles argumentu konstruktoru.

Noklusējuma konstruktora sintakse

className() {     // body_of_constructor  }>

Noklusējuma konstruktora piemēri

Tālāk sniegtie piemēri parāda, kā izmantot noklusējuma konstruktorus programmā C++.

1. piemērs:

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;> }>

>

>

Izvade

a: 10 b: 20>

Piezīme: Pat ja mēs nepārprotami nedefinējam nevienu konstruktoru, kompilators automātiski netieši nodrošinās noklusējuma konstruktoru.

2. piemērs:

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;> }>

>

>

Izvade

(no output)>

Kā redzam, mēs varam izveidot klases skolēna objektu, neizlaižot nevienu argumentu, pat ja mēs tam neesam definējuši nekādu skaidru noklusējuma konstruktoru.

2. Parameterized Constructor valodā C++

Parametrētie konstruktori ļauj nodot argumentus konstruktoriem. Parasti šie argumenti palīdz inicializēt objektu, kad tas tiek izveidots. Lai izveidotu parametrizētu konstruktoru, vienkārši pievienojiet tam parametrus tāpat kā jebkurai citai funkcijai. Kad definējat konstruktora pamattekstu, izmantojiet parametrus, lai inicializētu objektu.

Parametrētā konstruktora sintakse

className (parameters...) {     // body  }>

Parametrizēta konstruktora piemēri

Tālāk sniegtie piemēri parāda, kā izmantot parametrizētos konstruktorus programmā C++.

1. piemērs: Parametrizēta konstruktora definēšana klasē.

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;> }>

>

>

Izvade

p1.x = 10, p1.y = 15>

2. piemērs: parametrizēta konstruktora definēšana ārpus klases.

C++




// 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;> }>

>

>

Izvade

1001 Ram 10000>

Kad objekts ir deklarēts parametrizētā konstruktorā, sākotnējās vērtības ir jānodod konstruktora funkcijai kā argumenti. Parastais objektu deklarēšanas veids var nedarboties. Parametrētos konstruktorus var izsaukt tieši vai netieši:

Example e = Example(0, 50);   // Explicit call  Example e(0, 50);    // Implicit call>

Ja ir definēts parametrizētais konstruktors un nav skaidri definēts neviens noklusējuma konstruktors, kompilators netieši neizveidos noklusējuma konstruktoru un tādējādi neizveidos vienkāršu objektu kā:

Student s;>

mirgos kļūda.

3. piemērs:

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;> }>

>

>

Izvade

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 ^~>

Svarīga piezīme: Ikreiz, kad klasei definējam vienu vai vairākus ne-noklusējuma konstruktorus (ar parametriem), arī noklusējuma konstruktors (bez parametriem) ir skaidri jādefinē, jo šajā gadījumā kompilators nenodrošinās noklusējuma konstruktoru. Tomēr tas nav nepieciešams, bet tiek uzskatīts par labāko praksi vienmēr definēt noklusējuma konstruktoru.

Parametrizētā konstruktora lietojumi

  • To izmanto, lai inicializētu dažādu objektu dažādus datu elementus ar dažādām vērtībām, kad tie tiek izveidoti.
  • To izmanto, lai pārslogotu konstruktorus.

Noklusējuma argumenti ar C++ parametrizēto konstruktoru

Tāpat kā parastās funkcijas, arī parametrizēto konstruktoru argumentiem varam definēt noklusējuma vērtības. Visi noteikumi noklusējuma argumenti tiks piemērots šiem parametriem.

3. piemērs: parametrizēta konstruktora definēšana ar noklusējuma vērtībām

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;> }>

>

>

Izvade

First Object Data: 0 Second Object Data: 25>

Kā redzam, ja katram parametrizētā konstruktora argumentam tiek piešķirtas noklusējuma vērtības, ir likumīgi izveidot objektu, nenododot nekādus parametrus, tāpat kā noklusējuma konstruktoriem. Tātad šāda veida konstruktors darbojas gan kā noklusējuma, gan parametrizēts konstruktors.

3. Kopējiet Constructor programmā C++

Kopiju konstruktors ir biedra funkcija, kas inicializē objektu, izmantojot citu tās pašas klases objektu.

Sintakse no Kopēšanas konstruktors

Kopēšanas konstruktors izmanto atsauci uz tās pašas klases objektu kā argumentu.

ClassName (ClassName &obj) {    // body_containing_logic  }>

Tāpat kā noklusējuma konstruktors, C++ kompilators nodrošina arī netiešu kopijas konstruktoru, ja nav skaidras kopijas konstruktora definīcijas. Šeit jāatzīmē, ka atšķirībā no noklusējuma konstruktora, kur jebkura veida tiešā konstruktora klātbūtne izraisa netiešā noklusējuma konstruktora dzēšanu, kompilators vienmēr izveidos netiešās kopijas konstruktoru, ja nav precīza kopijas konstruktora. vai ir klāt izteikts pārvietošanas konstruktors.

Kopēšanas konstruktora piemēri

Tālāk sniegtie piemēri parāda, kā izmantot kopēšanas konstruktorus programmā C++.

1. piemērs: Implicit Copy Constructor ilustrācija

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;> }>

>

>

Izvade

ID=10 ID=10>

2. piemērs. Skaidras kopijas konstruktora definēšana

C++


dharmendra vecums



// 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;> }>

>

>

Izvade

ID=10 ID=10>

3. piemērs. Skaidras kopijas konstruktora definēšana ar parametrizētu konstruktoru

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;> }>

>

>

Izvade

1001 Manjeet 10000 1001 Manjeet 10000>

Kopēšanas konstruktora lietojumi

  • Izveido jaunu objektu, kopējot vērtības no esoša objekta.
  • Var izmantot dziļās kopēšanas veikšanai.
  • Ja nepieciešams, kopēšanas procesa laikā mainiet konkrētus atribūtus.

4. Pārvietojiet Constructor programmā C++

Pārvietošanās konstruktors ir nesens C++ konstruktoru saimes papildinājums. Tas ir kā kopiju konstruktors, kas konstruē objektu no jau esošajiem objektiem, taču tā vietā, lai kopētu objektu jaunajā atmiņā, tas izmanto pārvietošanas semantiku, lai nodotu jau izveidotā objekta īpašumtiesības jaunajam objektam, neradot papildu kopijas.

To var uzskatīt par resursu zagšanu no citiem objektiem.

Move Constructor sintakse programmā C++

className (className&& obj) {    // body of the constructor  }>

The pārvietot konstruktors ņem rvērtības atsauce tās pašas klases objekta un nodod īpašumtiesības uz šo objektu jaunizveidotajam objektam.

Tāpat kā kopēšanas konstruktors, arī kompilators izveidos pārvietošanas konstruktoru katrai klasei, kurai nav skaidra pārvietošanas konstruktora.

Move Constructor piemēri

Tālāk sniegtie piemēri parāda, kā izmantot pārvietošanas konstruktorus programmā C++.

1. piemērs: Move Constructor definēšana

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;> }>

>

>

Izvade

Move Constructor Called newBox.data: 42>

Move Constructor lietojumi

  • Tā vietā, lai izveidotu kopijas, pārvietošanas konstruktori efektīvi nodod īpašumtiesības uz šiem resursiem.
  • Tas novērš nevajadzīgu atmiņas kopēšanu un samazina pieskaitāmās izmaksas.
  • Varat definēt savu pārvietošanas konstruktoru, lai apstrādātu noteiktu resursu pārsūtīšanu.

Iznīcinātāji valodā C++

Destruktors ir arī īpaša biedra funkcija kā konstruktors. Destruktors iznīcina konstruktora izveidotos klases objektus. Destruktoram ir tāds pats nosaukums kā klases nosaukumam, pirms kura ir tildes (~) simbols. Nav iespējams definēt vairāk kā vienu destruktoru. Destruktors ir tikai viens veids, kā iznīcināt konstruktora radīto objektu. Tādējādi destruktoru nevar pārslogot. Destructor neprasa nekādus argumentus un neatgriež nekādu vērtību. Tas tiek automātiski izsaukts, kad objekts iziet ārpus darbības jomas. Destruktori atbrīvo atmiņas vietu, ko aizņem konstruktora izveidotie objekti. In iznīcinātājs , objekti tiek iznīcināti objektu radīšanas reversā.

Destruktoru sintakse programmā C++

Tāpat kā konstruktorus, arī iznīcinātājus var definēt klasē vai ārpus tās.

Sintakse destruktora definēšanai klasē

~ (){}>

Sintakse destruktora definēšanai ārpus klases

: : ~(){}>

Destrutoru piemēri programmā C++

Tālāk minētie piemēri parāda, kā izmantot destrutorus C++.

1. piemērs: Vienkārša iznīcinātāja definēšana

C++




#include> using> namespace> std;> class> Test {> public>:> >Test() { cout <<>' Constructor executed'>; }> >~Test() { cout <<>' Destructor executed'>; }> };> main()> {> >Test t;> >return> 0;> }>

>

>

Izvade

 Constructor executed Destructor executed>

2. piemērs: Objekta izveides un iznīcināšanas reižu skaitīšana

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;> }>

>

>

Izvade

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>

Destrutoru raksturojums programmā C++

Tālāk ir norādītas dažas galvenās C++ destruktoru īpašības:

  • Kompilators automātiski izsauc Destructor, kad tā atbilstošais konstruktors iziet ārpus darbības jomas un atbrīvo atmiņas vietu, kas programmai vairs nav nepieciešama.
  • Destructor neprasa nekādus argumentus un neatgriež vērtību, tāpēc to nevar pārslogot.
  • Destruktoru nevar deklarēt kā statisku un konst;
  • Iznīcinātājs ir jādeklarē programmas publiskajā sadaļā.
  • Destruktors tiek izsaukts apgrieztā secībā tā konstruktora izsaukšanai.

Bieži uzdotie jautājumi par C++ konstruktoriem

Kādas ir funkcijas, kuras pēc noklusējuma ģenerē kompilators, ja mēs tās nepārprotami nenodrošinām?

Funkcijas, ko kompilators pēc noklusējuma ģenerē, ja mēs tās nepārprotami nenodrošinām, ir:

  1. Noklusējuma konstruktors
  2. Kopēšanas konstruktors
  3. Pārvietot konstruktorus
  4. Uzdevuma operators
  5. Iznīcinātājs

Vai mēs varam padarīt konstruktorus privātus?

Jā, C++ valodā konstruktorus var padarīt privātus. Tas nozīmē, ka neviens ārējs kods nevar tieši izveidot šīs klases objektu.

Kā konstruktori atšķiras no parastās locekļa funkcijas?

Konstruktors no parastajām funkcijām atšķiras šādos veidos:

  • Konstruktoram ir tāds pats nosaukums kā pašai klasei
  • Tomēr noklusējuma konstruktoriem nav ievades argumentu, bet kopēšanas un parametrizētajiem konstruktoriem ir ievades argumenti
  • Konstruktoriem nav atgriešanas veida
  • Kad objekts tiek izveidots, automātiski tiek izsaukts konstruktors.
  • Tas jāievieto klases publiskajā sadaļā.
  • Ja nenorādām konstruktoru, C++ kompilators objektam ģenerē noklusējuma konstruktoru (negaida parametrus un tam ir tukšs pamatteksts).

Vai klasē var būt vairāk nekā viens konstruktors?

Jā, mums klasē var būt vairāk nekā viens konstruktors. Tas tiek saukts Konstruktora pārslodze .

Saistītie raksti:

  • Iznīcinātāji valodā C++
  • Viktorīna par konstruktoriem programmā C++
  • C++ programmu izvade | 26. komplekts (konstruktori)
  • C++ programmu izvade | 27. komplekts (konstruktori un iznīcinātāji)