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 Person
z 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
45
podali kot argument. Ta konstruktor inicializira starost na45
.
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.9
in širina inicializirana na4.2
. - Ko se ustvari room2, se pokliče drugi konstruktor. Argumente smo predali
8.2
in6.6
. dolžina je inicializirana na prvi argument,8.2
širina pa na6.6
. - Ko se ustvari room3, se pokliče tretji konstruktor. Navedli smo en argument
8.2
. length se inicializira v argument8.2
. širina je7.2
privzeto inicializirana na privzeto.
Priporočena vadnica : Preobremenitev funkcije C ++.