Конструктори 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 ++ конструктор з параметрами відомий як параметризований конструктор. Це найкращий спосіб ініціалізації даних членів.

Приклад 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()який має 2 параметри: 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;

Примітка : Конструктор в основному використовується для ініціалізації об’єктів. Вони також використовуються для запуску коду за замовчуванням, коли створюється об'єкт.

Цікаві статті...