Przeciążanie konstruktora C ++ (z przykładami)

W tym samouczku nauczymy się przeciążania konstruktorów w C ++ na przykładach.

Konstruktory mogą być przeciążane w podobny sposób, jak przeciążanie funkcji.

Przeciążone konstruktory mają tę samą nazwę (nazwę klasy), ale różną liczbę argumentów. W zależności od liczby i typu przekazanych argumentów wywoływany jest odpowiedni konstruktor.

Przykład 1: Przeciążenie 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; )

Wynik

 Osoba1 Wiek = 20 Osoba2 Wiek = 45

W tym programie stworzyliśmy klasę, Personktóra ma jeden zmienny wiek.

Zdefiniowaliśmy również dwa konstruktory Person()i Person(int a):

  • Kiedy tworzony jest obiekt person1, wywoływany jest pierwszy konstruktor, ponieważ nie przekazaliśmy żadnego argumentu. Ten konstruktor inicjuje age do 20.
  • Podczas tworzenia person2 wywoływany jest drugi konstruktor, ponieważ przekazaliśmy go 45jako argument. Ten konstruktor inicjuje age do 45.

Funkcja getAge()zwraca wartość wieku i używamy jej do wydrukowania wieku osób 1 i 2.

Przykład 2: Przeciążenie 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; )

Wynik

Gdy żaden argument nie zostanie przekazany: Powierzchnia pokoju = 28,98 Gdy (8,2; 6,6) jest spełnione. Powierzchnia pomieszczenia = 54,12 Gdy szerokość jest ustalona na 7,2 i (8,2) została przekroczona: Powierzchnia pomieszczenia = 59,04
  • Kiedy tworzony jest pokój 1, wywoływany jest pierwszy konstruktor. długość jest inicjalizowana na, 6.9a szerokość jest inicjalizowana na 4.2.
  • Kiedy tworzony jest pokój 2, wywoływany jest drugi konstruktor. Przekazaliśmy argumenty 8.2i 6.6. length jest inicjowana na pierwszym argumencie, 8.2a szerokość na 6.6.
  • Kiedy tworzony jest pokój 3, wywoływany jest trzeci konstruktor. Przekazaliśmy jeden argument 8.2. length jest inicjalizowana w argumencie 8.2. szerokość jest inicjalizowana 7.2domyślnie.

Zalecany samouczek : Przeciążanie funkcji C ++.

Interesujące artykuły...