C ++ konstruktori: veidi un kopiju konstruktori

Šajā apmācībā mēs uzzināsim par C ++ konstruktoru un tā tipu, izmantojot palīdzības piemērus.

Konstruktors ir īpašs dalībnieka funkcijas veids, kas tiek izsaukts automātiski, kad tiek izveidots objekts.

Programmā C ++ konstruktoram ir tāds pats nosaukums kā klasei, un tam nav atgriešanās veida. Piemēram,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Šeit funkcija Wall()ir klases konstruktors Wall. Ievērojiet, ka konstruktors

  • ir tāds pats nosaukums kā klasei,
  • nav atgriešanās veida un
  • ir public

C ++ noklusējuma konstruktors

Konstruktors bez parametriem ir pazīstams kā noklusējuma konstruktors . Iepriekš minētajā piemērā Wall()ir noklusējuma konstruktors.

1. piemērs: C ++ noklusējuma konstruktors

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Izeja:

 Sienas garuma izveidošana = 5.5

Šeit, kad tiek izveidots objekts wall1, Wall()tiek izsaukts konstruktors. Tas nosaka objekta garuma mainīgo uz 5.5.

Piezīme: Ja mēs savā klasē neesam definējuši konstruktoru, tad C ++ kompilators automātiski izveidos noklusējuma konstruktoru ar tukšu kodu un bez parametriem.

C ++ parametrizēts konstruktors

Programmā C ++ konstruktors ar parametriem ir pazīstams kā parametrizēts konstruktors. Šī ir vēlamā metode dalībnieku datu inicializēšanai.

2. piemērs: C ++ parametrizēts konstruktors

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Izeja:

 1. sienas laukums: 90.3. 2. sienas laukums: 53.55

Šeit mēs esam izveidojuši parametrizētu konstruktoru, Wall()kuram ir 2 parametri: double lenun double hgt. Šajos parametros ietvertās vērtības tiek izmantotas, lai inicializētu dalībnieku mainīgos garumu un augstumu.

Izveidojot Roomklases objektu, dalībnieku mainīgo vērtības mēs nododam kā argumentus. Kods tam ir:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Šādi inicializējot locekļu mainīgos, tagad ar calculateArea()funkciju varam aprēķināt sienas laukumu .

C ++ kopiju veidotājs

Kopiju konstruktors C ++ tiek izmantots, lai kopētu viena objekta datus citam.

3. piemērs: C ++ kopiju veidotājs

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Rezultāts

 1. istabas platība: 90.3. 2. telpas platība: 90.3

Šajā programmā mēs esam izmantojuši kopiju konstruktoru, lai kopētu viena Wallklases objekta saturu citā. Kopijas veidotāja kods ir:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Ievērojiet, ka šī konstruktora parametram ir Wallklases objekta adrese .

Pēc tam mēs piešķiram pirmā objekta mainīgo vērtības atbilstošajiem otrā objekta mainīgajiem. Šādi tiek kopēts objekta saturs.

Pēc main()tam mēs izveidojam divus objektus wall1 un wall2 un pēc tam ar kodu kopējam pirmā objekta saturu otrajā

 Wall wall2 = wall1;

Piezīme . Objektu inicializēšanai galvenokārt izmanto konstruktoru. Tos izmanto arī, lai palaistu noklusējuma kodu, kad tiek izveidots objekts.

Interesanti raksti...