Preťaženie konštruktéra C ++ (s príkladmi)

V tomto tutoriále sa pomocou príkladov dozvieme o preťažení konštruktorov v C ++.

Konštruktéry môžu byť preťažené podobným spôsobom ako preťaženie funkcií.

Preťažené konštruktory majú rovnaký názov (názov triedy), ale rôzny počet argumentov. V závislosti od počtu a typu odovzdaných argumentov sa zavolá zodpovedajúci konštruktor.

Príklad 1: Preťaženie konštruktora

 // 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ýkon

 Osoba1 Vek = 20 Osoba2 Vek = 45

V tomto programe sme vytvorili triedu, Personktorá má jeden variabilný vek.

Definovali sme tiež dvoch konštruktorov Person()a Person(int a):

  • Keď sa vytvorí objekt person1, zavolá sa prvý konštruktor, pretože sme neprešli žiadnym argumentom. Tento konštruktor inicializuje vek na 20.
  • Keď sa vytvorí osoba2, zavolá sa druhý konštruktor, pretože sme prešli 45ako argument. Tento konštruktor inicializuje vek na 45.

Funkcia getAge()vráti hodnotu veku a použijeme ju na vytlačenie veku osoby1 a osoby2.

Príklad 2: Preťaženie konštruktora

 // 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ýkon

Keď neprechádza žiadny argument: Plocha miestnosti = 28,98 Keď je odovzdané (8,2; 6,6). Plocha miestnosti = 54,12 Keď je šírka pevná na 7,2 a hodnota (8.2) je prekročená: Plocha miestnosti = 59,04
  • Keď sa vytvorí room1, zavolá sa prvý konštruktor. dĺžka sa inicializuje na 6.9a šírka sa inicializuje na 4.2.
  • Keď sa vytvorí room2, zavolá sa druhý konštruktor. Argumenty sme prešli 8.2a 6.6. dĺžka sa inicializuje na prvý argument 8.2a šírka sa inicializuje na 6.6.
  • Keď sa vytvorí room3, zavolá sa tretí konštruktor. Prešli sme jedným argumentom 8.2. dĺžka je inicializovaná k argumentu 8.2. šírka sa 7.2predvolene inicializuje .

Odporúčaný výukový program : Preťaženie funkcií v C ++.

Zaujímavé články...