Конструкторы 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 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; )

Вывод:

 Создание длины стены = 5,5

Здесь при создании объекта wall1 вызывается Wall()конструктор. Это устанавливает для переменной длины объекта значение 5.5.

Примечание. Если мы не определили конструктор в нашем классе, компилятор C ++ автоматически создаст конструктор по умолчанию с пустым кодом и без параметров.

Параметризованный конструктор C ++

В C ++ конструктор с параметрами известен как параметризованный конструктор. Это предпочтительный метод инициализации данных членов.

Пример 2: параметризованный конструктор 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; )

Вывод:

 Площадь стены 1: 90,3 Площадь стены 2: 53,55

Здесь мы создали параметризованный конструктор Wall()с двумя параметрами: double lenи double hgt. Значения, содержащиеся в этих параметрах, используются для инициализации длины и высоты переменных-членов.

Когда мы создаем объект Roomкласса, мы передаем значения для переменных-членов в качестве аргументов. Код для этого:

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

С инициализированными таким образом переменными-членами мы можем вычислить площадь стены с помощью calculateArea()функции.

Конструктор копирования C ++

Конструктор копирования в C ++ используется для копирования данных одного объекта в другой.

Пример 3: Конструктор копирования C ++

 #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; )

Вывод

 Площадь помещения 1: 90,3 Площадь помещения 2: 90,3

В этой программе мы использовали конструктор копирования для копирования содержимого одного объекта Wallкласса в другой. Код конструктора копирования:

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

Обратите внимание, что параметр этого конструктора имеет адрес объекта Wallкласса.

Затем мы присваиваем значения переменных первого объекта соответствующим переменным второго объекта. Так копируется содержимое объекта.

В main(), затем мы создаем два объекта wall1 и wall2 , а затем скопировать содержимое первого объекта ко второму с кодом

 Wall wall2 = wall1;

Примечание . Конструктор в основном используется для инициализации объектов. Они также используются для запуска кода по умолчанию при создании объекта.

Интересные статьи...