C ++ konstruktori: tipovi i konstruktori za kopiranje

U ovom uputstvu naučit ćemo o konstruktoru C ++ i njegovom tipu pomoću primjera pomoći.

Konstruktor je posebna vrsta funkcije člana koja se automatski poziva kada se stvori objekt.

U C ++-u konstruktor ima isto ime kao i klasa i nema povratni tip. Na primjer,

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

Ovdje je funkcija Wall()konstruktor klase Wall. Primijetite da je konstruktor

  • ima isto ime kao i razred,
  • nema tip povratka i
  • je public

Zadani konstruktor C ++

Konstruktor bez parametara poznat je kao zadani konstruktor . U gornjem primjeru Wall()je zadani konstruktor.

Primjer 1: Zadani konstruktor C ++

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

Izlaz:

 Stvaranje duljine zida = 5,5

Ovdje se, kada se kreira objekt wall1, Wall()poziva konstruktor. Ovo postavlja varijablu duljine objekta na 5.5.

Napomena: Ako u svojoj klasi nismo definirali konstruktor, tada će C ++ prevodilac automatski stvoriti zadani konstruktor s praznim kodom i bez parametara.

C ++ parametarski konstruktor

U C ++-u je konstruktor s parametrima poznat kao parametrizirani konstruktor. Ovo je preferirana metoda za inicijalizaciju podataka o članovima.

Primjer 2: C ++ parametarski konstruktor

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

Izlaz:

 Područje zida 1: 90,3 Područje zida 2: 53,55

Ovdje smo stvorili parametrizirani konstruktor Wall()koji ima 2 parametra: double leni double hgt. Vrijednosti sadržane u tim parametrima koriste se za inicijalizaciju duljine i visine varijabli člana.

Kada kreiramo objekt Roomklase, vrijednosti za varijable člana prosljeđujemo kao argumente. Kôd za to je:

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

S tako inicijaliziranim varijablama članaka sada pomoću calculateArea()funkcije možemo izračunati površinu zida .

C ++ konstruktor za kopiranje

Konstruktor kopiranja u jeziku C ++ koristi se za kopiranje podataka jednog objekta na drugi.

Primjer 3: Konstruktor za kopiranje C ++

 #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; )

Izlaz

 Površina sobe 1: 90.3 Površina sobe 2: 90.3

U ovom smo programu koristili konstruktor kopiranja za kopiranje sadržaja jednog predmeta Wallklase u drugi. Kôd konstruktora kopije je:

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

Primijetite da parametar ovog konstruktora ima adresu objekta Wallklase.

Zatim dodijeljujemo vrijednosti varijabli prvog objekta odgovarajućim varijablama drugog objekta. Tako se kopira sadržaj predmeta.

U main(), onda smo stvorili dva objekta wall1 i wall2, a zatim kopirati sadržaj prvog objekta na drugi s kodom

 Wall wall2 = wall1;

Napomena : Konstruktor se primarno koristi za inicijalizaciju objekata. Također se koriste za pokretanje zadanog koda kada se kreira objekt.

Zanimljivi članci...