Konstruktory C ++: typy i konstruktory kopiowania

W tym samouczku dowiemy się o konstruktorze C ++ i jego typie na podstawie przykładów pomocy.

Konstruktor to specjalny typ funkcji składowej, która jest wywoływana automatycznie podczas tworzenia obiektu.

W C ++ konstruktor ma taką samą nazwę jak nazwa klasy i nie ma typu zwracanego. Na przykład,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Tutaj funkcja Wall()jest konstruktorem klasy Wall. Zwróć uwagę, że konstruktor

  • ma taką samą nazwę jak klasa,
  • nie ma typu zwracanego, a
  • jest public

Domyślny konstruktor języka C ++

Konstruktor bez parametrów jest nazywany konstruktorem domyślnym . W powyższym przykładzie Wall()jest konstruktorem domyślnym.

Przykład 1: domyślny konstruktor języka C ++

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Wynik:

 Tworzenie długości ściany = 5,5

Tutaj, gdy tworzony jest obiekt wall1, Wall()wywoływany jest konstruktor. To ustawia zmienną długości obiektu na 5.5.

Uwaga: Jeśli nie zdefiniowaliśmy konstruktora w naszej klasie, kompilator C ++ automatycznie utworzy domyślny konstruktor z pustym kodem i bez parametrów.

Konstruktor parametryzowany w języku C ++

W C ++ konstruktor z parametrami jest nazywany konstruktorem sparametryzowanym. Jest to preferowana metoda inicjowania danych składowych.

Przykład 2: Konstruktor parametryzowany w C ++

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Wynik:

 Powierzchnia ściany 1: 90,3 Powierzchnia ściany 2: 53,55

Tutaj stworzyliśmy sparametryzowany konstruktor, Wall()który ma 2 parametry: double leni double hgt. Wartości zawarte w tych parametrach są używane do inicjalizacji długości i wysokości zmiennych składowych.

Kiedy tworzymy obiekt Roomklasy, przekazujemy wartości zmiennych składowych jako argumenty. Kod do tego to:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Mając w ten sposób zainicjowane zmienne składowe, możemy teraz obliczyć powierzchnię ściany za pomocą calculateArea()funkcji.

Konstruktor kopiowania C ++

Konstruktor kopiujący w C ++ służy do kopiowania danych jednego obiektu do drugiego.

Przykład 3: C ++ Copy Constructor

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Wynik

 Powierzchnia pokoju 1: 90,3 Powierzchnia pokoju 2: 90,3

W tym programie użyliśmy konstruktora kopiującego do skopiowania zawartości jednego obiektu Wallklasy do drugiego. Kod konstruktora kopiującego to:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Zauważ, że parametr tego konstruktora ma adres obiektu Wallklasy.

Następnie przypisujemy wartości zmiennych pierwszego obiektu do odpowiednich zmiennych drugiego obiektu. W ten sposób kopiowana jest zawartość obiektu.

W programie main()tworzymy następnie dwa obiekty wall1 i wall2, a następnie kopiujemy zawartość pierwszego obiektu do drugiego z kodem

 Wall wall2 = wall1;

Uwaga : Konstruktor jest używany głównie do inicjowania obiektów. Są również używane do uruchamiania domyślnego kodu podczas tworzenia obiektu.

Interesujące artykuły...