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 len
i 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 Room
klasy, 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 Wall
klasy do drugiego. Kod konstruktora kopiującego to:
Room(Room &obj) ( length = obj.length; height = obj.height; )
Zauważ, że parametr tego konstruktora ma adres obiektu Wall
klasy.
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.