Preobremenitev konstruktorja C ++ (z primeri)

V tej vadnici bomo s pomočjo primerov spoznali preobremenitev konstruktorjev v C ++.

Konstruktorje lahko preobremenimo na podoben način kot preobremenitev funkcije.

Preobremenjeni konstruktorji imajo enako ime (ime razreda), vendar različno število argumentov. Glede na število in vrsto podanih argumentov se pokliče ustrezni konstruktor.

Primer 1: Preobremenitev konstruktorja

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

Izhod

 Oseba1 Starost = 20 Oseba2 Starost = 45

V tem programu smo ustvarili razred Personz eno spremenljivo starostjo.

Določili smo tudi dva konstruktorja Person()in Person(int a):

  • Ko se ustvari objekt person1, se pokliče prvi konstruktor, ker nismo predali nobenega argumenta. Ta konstruktor inicializira starost na 20.
  • Ko ustvarimo person2, se pokliče drugi konstruktor, saj smo ga 45podali kot argument. Ta konstruktor inicializira starost na 45.

Funkcija getAge()vrne vrednost starosti in z njo natisnemo starost osebe1 in osebe2.

Primer 2: Preobremenitev konstruktorja

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

Izhod

Ko ni poslan noben argument: Območje sobe = 28,98 Ko je posredovano (8,2, 6,6). Površina prostora = 54,12 Ko je širina določena na 7,2 in je sprejeta (8,2): Površina sobe = 59,04
  • Ko se ustvari room1, se pokliče prvi konstruktor. dolžina je inicializirana na 6.9in širina inicializirana na 4.2.
  • Ko se ustvari room2, se pokliče drugi konstruktor. Argumente smo predali 8.2in 6.6. dolžina je inicializirana na prvi argument, 8.2širina pa na 6.6.
  • Ko se ustvari room3, se pokliče tretji konstruktor. Navedli smo en argument 8.2. length se inicializira v argument 8.2. širina je 7.2privzeto inicializirana na privzeto.

Priporočena vadnica : Preobremenitev funkcije C ++.

Zanimive Članki...