Вступ до конструктора копіювання в C ++

Мови програмування надають нам різні функції, які можна використовувати для розробки програми. Що стосується мов середнього рівня, функції можуть бути меншими порівняно з мовами високого рівня, але будь-які варіанти, які вони пропонують, достатньо для розробки значних програм. У цьому розділі ми дізнаємось про копіювальні конструктори. Конструктор може бути визначений як спеціальна функція, яка має ім'я так само, як і клас, у якому визначено. Конструктор викликається автоматично, коли об'єкт цього класу ініціалізується. Можна сказати, що ініціалізація об'єкта, якщо клас неявно викликає конструктор. Якщо конструктор перевантажений, то в цьому випадку значення повинні передаватися разом з об'єктом під час ініціалізації. Тут тип конструктора, якого ми будемо вивчати, дуже унікальний і відомий як конструктор копій. Цей конструктор працює з використанням інших об'єктів, а не звичайних значень.

Як працює конструктор копій у C ++?

Конструктор копіювання може бути визначений як особливий тип конструктора, який використовується для оголошення об’єкта та ініціалізації того ж за допомогою інших об'єктів. Нормальний конструктор викликається при ініціалізації об'єкта цього класу. Якщо конструктор перевантажений кількома параметрами, ніж ініціалізація об'єкта та передача однакової кількості аргументів, викличе параметр перевантаження. Оскільки конструктор копій є перевантаженим, тому його можна викликати, коли об'єкт ініціалізується за допомогою аргументу, і аргумент повинен передавати значення об'єкта, а не будь-яке нормальне значення.

Як тільки значення, отримане параметром перевантаженого конструктора, знайдеться об'єктом, конструктор копіювання буде викликаний і набір операторів, визначених у конструкторі копіювання, почне виконувати. Перш ніж використовувати конструктор копій, ми повинні створити об'єкт одного класу. У ньому чітко зазначено підхід, що будь-яка програма, призначена для реалізації конструктора копій, також повинна мати конструктор за замовчуванням або параметризований конструктор, щоб об'єкт міг бути створений, що допоможе залучити конструктор копій.

Загальний сценарій може розглядатися як використання одного об’єкта для створення іншого об'єкта. Усі значення, пов’язані з об'єктом, який використовується для ініціалізації об'єкта за допомогою конструктора копій, отримують розподілений для щойно ініціалізованого об'єкта. Це означає, що якщо значення будь-якої змінної використовується першим об'єктом, та сама змінна може бути використана об'єктом, який ініціалізується конструктором копіювання. Особливість конструктора копій вважається дуже важливою і робить розробку дуже зручною для деяких програм. Його функції використовувати посилання на об'єкт одного класу допомагають розробити додаток, який має вимогу, яку можна виконати лише за допомогою конструктора копій. Хоча він не використовується так часто, як конструктор за замовчуванням або параметризований конструктор, він має достатньо потужності, щоб сприяти додаванню нової функціональності в додаток.

Приклад

Давайте розберемося з концепцією конструктора копій на прикладі. Тут ми будемо працювати над простим прикладом, який покаже вам, як працює конструктор копіювання та як він може отримати доступ до значень, які були пов'язані з об'єктом, за допомогою якого новий об’єкт створюється конструктором копіювання. Нижченаведена ілюстрація дасть вам уявлення про те, як по-різному викликати конструктор копій порівняно з викликом звичайного перевантаженого конструктора.

Програма

#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )
#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )

У цій програмі ми назвали параметризований конструктор в обхід аргументу через a1. Передане значення є цілим числом, оскільки параметризований конструктор був визначений для прийняття лише цілого числа. Коли значення 50 передається конструктору, значення присвоюється змінній з назвою var. Потім об'єкт a1 передається конструктору копії через a2. Після того, як конструктор копії отримав посилання на об'єкт, він зв'язав значення, виділене з першим об'єктом, із новоствореним об'єктом. Це простий приклад для пояснення концепції конструктора копій. Його можна використовувати в кількох інших програмах, щоб отримати різні функціональні можливості в додатку.

Вихід:

60

Правила та положення для конструктора копій на C ++

Конструктор копіювання вважається дещо відмінним від конструктора за замовчуванням або параметризованого конструктора. З одного боку, де звичайний конструктор працює, використовуючи значення загального типу даних, з іншого боку, конструктор копіювання працює, використовуючи раніше створений об'єкт того ж класу. Те, що має бути забезпечено при використанні конструктора копіювання, - параметри, що передаються через конструктор копій, повинні використовуватися разом зі знаком ampersand (&), оскільки це спеціальний символ, який використовується для утримання посилання на об'єкт. Якщо ampersand не буде використаний під час реалізації конструктора копій, він більше не буде конструктором копій, але автоматично буде розглядатися як конструктований параметр.

Що стосується виклику конструктора копій, ми повинні переконатися, що значення, передане як аргументи, має містити посилання на об'єкт, а не будь-яке значення, що належить до загального типу даних. Це кілька речей, які слід дуже гостро розглянути, впроваджуючи конструктор копій на мові програмування C ++. Крім того, кожен раз, коли ми використовуємо конструктор копій, ми повинні переконатися, що ми правильно його відрізняємо від параметризованого конструктора, оскільки в противному випадку це повністю змінить функціональність програми та призведе до неправильного генерування виводу.

Висновок

Конструктор копій розглядається як особливий вид конструктора, який працює з використанням посилання на об'єкт одного класу. Він використовується для залучення декількох функціональних можливостей у додатку. Якщо порівнювати з конструктором за замовчуванням, конструктор копій використовується не дуже часто в простих програмах, але коли мова йде про розробку складних додатків, які потрібно розгорнути у виробничому середовищі, конструктор копій використовується там, а також робить розробку додатків досить зручною .

Рекомендовані статті

Це посібник з конструкторів копіювання в C ++. Тут ми обговорюємо вступ та те, як працює конструктор копій у C ++ разом із Правилами та правилами для конструктора копій у C ++. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Копіювання конструктора на Java
  2. Конструктор копіювання в C #
  3. Конструктор на C ++
  4. Використання конструктора в C
  5. Типи конструктора в C # з реалізацією коду