Конструкторы С++
Конструкторы C++
В этом руководстве мы узнаем о конструкторе C++ и его типе с помощью справочных примеров.
Конструктор — это особый тип функции-члена, который вызывается автоматически при создании объекта.
В C++ конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа. Например,
class Wall {
public:
// create a constructor
Wall() {
// code
}
};
Здесь функция Wall()
является конструктором класса Wall
. Обратите внимание, что конструктор
- имеет то же имя, что и класс,
- не имеет возвращаемого типа и
- составляет
public
Конструктор C++ по умолчанию
Конструктор без параметров называется конструктором по умолчанию. . В приведенном выше примере Wall()
является конструктором по умолчанию.
Пример 1. Конструктор C++ по умолчанию
// C++ program to demonstrate the use of default constructor
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
Wall() {
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main() {
Wall wall1;
return 0;
}
Вывод
Creating a Wall Length = 5.5
Здесь, когда wall1 объект создан, Wall()
вызывается конструктор. Это устанавливает длину переменная объекта в 5.5
.
Примечание. Если мы не определили конструктор в нашем классе, то компилятор C++ автоматически создаст конструктор по умолчанию с пустым кодом и без параметров.
<час>Параметризованный конструктор C++
В C++ конструктор с параметрами называется параметризованным конструктором. Это предпочтительный метод инициализации данных участников.
<час>Пример 2. Параметризованный конструктор C++
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
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();
return 0;
}
Вывод
Area of Wall 1: 90.3 Area of Wall 2: 53.55
Здесь мы создали параметризованный конструктор Wall()
который имеет 2 параметра:double len
и double hgt
. Значения, содержащиеся в этих параметрах, используются для инициализации переменных-членов length. и высота .
Когда мы создаем объект Wall
class мы передаем значения переменных-членов в качестве аргументов. Код для этого:
Wall wall1(10.5, 8.6);
Wall wall2(8.5, 6.3);
Теперь, когда переменные-члены инициализированы, мы можем вычислить площадь стены с помощью calculateArea()
функция.
Конструктор копирования C++
Конструктор копирования в C++ используется для копирования данных одного объекта в другой.
<час>Пример 3. Конструктор копирования C++
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
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);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Вывод
Area of Wall 1: 90.3 Area of Wall 2: 90.3
В этой программе мы использовали конструктор копирования для копирования содержимого одного объекта из Wall
. класс к другому. Код конструктора копирования:
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
Обратите внимание, что параметр этого конструктора имеет адрес объекта Wall
класс.
Затем мы присваиваем значения переменных объекта obj объект в соответствующие переменные объекта, вызывающего конструктор копирования. Вот как копируется содержимое объекта.
В main()
, затем мы создаем два объекта wall1 и стена2 а затем скопируйте содержимое wall1 к стене2 :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
Здесь wall2 объект вызывает свой конструктор копирования, передавая адрес wall1 объект в качестве аргумента, т.е. &obj = &wall1
.
Примечание :конструктор в основном используется для инициализации объектов. Они также используются для запуска кода по умолчанию при создании объекта.
Язык C