Конструктор копіювання

Можна визначити об’єкти і одночасно їх ініціалізувати іншими за допомогою двох типів виразів:

alpha a3(a2); //ініціалізація копіювання

alpha a3=a2; //альтернативний запис ініціалізації копіювання

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

Як і оператор присвоювання, конструктор копіювання може бути перезавантаженим. В програмі 22.16 показано, як це робиться:

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

///////////////

class alpha

{private:

int data;

public:

alpha()

{ }

alpha(int d)

{data=d;}

alpha(alpha& a) //конструктор копіювання

{data=a.data;

cout<<”\nЗапущений конструктор копіювання”;

}

void display()

{cout<<data;}

 

void operator=(alpha& a)

{data=a.data;

cout<<”\nЗапущений оператор =”;

}

};

////////////////

 

int main()

{clrscr();

alpha a1(37);

alpha a2;

a2=a1; //Запуск перезавантаженого =

cout<<”\na2=”;a2.display();

alpha a3(a1); //запуск конструктора копіювання

//alpha a3=a1; //еквівалентне визначення а3

cout<<”\na3=”;a3.display();

cout<<endl;

bioskey(0);

return 0;

}

Програма 22.16

В цій програмі перезавантажується і оператор присвоювання і конструктор копіювання. Перезавантажене присвоювання схоже на аналогічне з програми 22.15. У конструктора копіювання є один аргумент – об’єкт типу alpha, що передається за посиланням. Його опис:

alpha(alpha&)

Він має вигляд Х(&X).

Вираз

а2=а1:

запускає оператор присвоювання, тоді як

alpha a3(a1);

запускає конструктор копіювання. З цією ж метою може бути використаний еквівалентний вираз:

alpha a3=a1;

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

 








Дата добавления: 2015-08-26; просмотров: 706;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.