Přetížení konstruktoru C ++ (s příklady)

V tomto tutoriálu se pomocí příkladů dozvíme o přetížení konstruktoru v C ++.

Konstruktory lze přetížit podobným způsobem jako přetížení funkce.

Přetížené konstruktory mají stejný název (název třídy), ale odlišný počet argumentů. V závislosti na počtu a typu předaných argumentů je volán odpovídající konstruktor.

Příklad 1: Přetížení konstruktoru

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

Výstup

 Osoba1 Věk = 20 Osoba2 Věk = 45

V tomto programu jsme vytvořili třídu, Personkterá má jeden proměnný věk.

Také jsme definovali dva konstruktory Person()a Person(int a):

  • Když je vytvořen objekt person1, je volán první konstruktor, protože jsme neprošli žádným argumentem. Tento konstruktor inicializuje věk na 20.
  • Když je vytvořena osoba2, volá se druhý konstruktor, protože jsme prošli 45jako argument. Tento konstruktor inicializuje věk na 45.

Funkce getAge()vrací hodnotu věku a pomocí ní vytiskneme věk osob1 a osob2.

Příklad 2: Přetížení konstruktoru

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

Výstup

Když není předán žádný argument: Plocha místnosti = 28,98 Když je předáno (8,2; 6,6). Plocha místnosti = 54,12 Je-li šířka pevná na 7,2 a (8,2) je předána: Plocha místnosti = 59,04
  • Když se vytvoří room1, zavolá se první konstruktor. délka je inicializována na 6.9a šířka je inicializována na 4.2.
  • Když se vytvoří room2, zavolá se druhý konstruktor. Předali jsme argumenty 8.2a 6.6. délka je inicializována na první argument 8.2a šířka je inicializována na 6.6.
  • Když se vytvoří room3, zavolá se třetí konstruktor. Prošli jsme jedním argumentem 8.2. délka je inicializována na argument 8.2. šířka je 7.2ve výchozím nastavení inicializována .

Doporučený výukový program : Přetížení funkcí v C ++.

Zajímavé články...