Preopterećenje konstruktora C ++ (s primjerima)

U ovom uputstvu naučit ćemo o preopterećenju konstruktora u C ++ uz pomoć primjera.

Konstruktori se mogu preopteretiti na sličan način kao i preopterećenje funkcije.

Preopterećeni konstruktori imaju isto ime (naziv klase), ali različit broj argumenata. Ovisno o broju i vrsti prosljeđenih argumenata, poziva se odgovarajući konstruktor.

Primjer 1: Preopterećenje konstruktora

 // C++ program to demonstrate constructor overloading #include using namespace std; class Person ( private: int age; public: // 1. Constructor with no arguments Person() ( age = 20; ) // 2. Constructor with an argument Person(int a) ( age = a; ) int getAge() ( return age; ) ); int main() ( Person person1, person2(45); cout << "Person1 Age = " << person1.getAge() << endl; cout << "Person2 Age = " << person2.getAge() << endl; return 0; )

Izlaz

 Osoba1 Dob = 20 Osoba2 Dob = 45

U ovom smo programu stvorili razred Personkoji ima jednu varijabilnu dob.

Također smo definirali dva konstruktora Person()i Person(int a):

  • Kada se kreira objekt person1, poziva se prvi konstruktor jer nismo proslijedili nijedan argument. Ovaj konstruktor inicijalizira age to 20.
  • Kada se stvori person2, poziva se drugi konstruktor budući da smo proslijedili 45kao argument. Ovaj konstruktor inicijalizira age to 45.

Funkcija getAge()vraća vrijednost dobi, a mi je koristimo za ispis dobi osobe1 i osobe2.

Primjer 2: Preopterećenje konstruktora

 // C++ program to demonstrate constructor overloading #include using namespace std; class Room ( private: double length; double breadth; public: // 1. Constructor with no arguments Room() ( length = 6.9; breadth = 4.2; ) // 2. Constructor with two arguments Room(double l, double b) ( length = l; breadth = b; ) // 3. Constructor with one argument Room(double len) ( length = len; breadth = 7.2; ) double calculateArea() ( return length * breadth; ) ); int main() ( Room room1, room2(8.2, 6.6), room3(8.2); cout << "When no argument is passed: " << endl; cout << "Area of room = " << room1.calculateArea() << endl; cout << "When (8.2, 6.6) is passed." << endl; cout << "Area of room = " << room2.calculateArea() << endl; cout << "When breadth is fixed to 7.2 and (8.2) is passed:" << endl; cout << "Area of room = " << room3.calculateArea() << endl; return 0; )

Izlaz

Kada se ne proslijedi nijedan argument: Površina sobe = 28,98 Kada se prenese (8,2, 6,6). Površina prostorije = 54,12 Kada je širina fiksna na 7,2 i (8,2) je donesena: Površina sobe = 59,04
  • Kada se kreira soba1, poziva se prvi konstruktor. dužina je inicijalizirana u, 6.9a širina inicijalizirana u 4.2.
  • Kada se kreira soba2, poziva se drugi konstruktor. Prošli smo argumente 8.2i 6.6. duljina se inicijalizira na prvi argument, 8.2a širina na 6.6.
  • Kada se kreira room3, poziva se treći konstruktor. Prošli smo jedan argument 8.2. length se inicijalizira argumentom 8.2. širina je 7.2zadana zadana vrijednost.

Preporučeni vodič : Preopterećenje funkcije C ++.

Zanimljivi članci...