Ініціалізація копіювання і присвоювання

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

Ми постійно використовуємо оператор присвоювання, можливо, навіть не задумуючись про те, що за ними стоїть з точки зору компілятора. Нехай а1 і а2 – деякі об’єкти. Попри те, що ми наказуємо компілятору «присвоїти а2 значення а1», вираз

а2=а1

змусить компілятор копіювати дані з а1 елемент за елементом в а2. Так за замовчуванням діє оператор присвоювання.

Ми знайомі з ініціалізацією змінних. Ініціалізація одного об’єкту іншим, як у виразі

alpha a2(a1);

викликає подібні дії. Компілятор створює новий об’єкт а2, потім елемент за елементом копіює дані з а1 в а2. Це саме те, що за замовчуванням виконує конструктор копіювання.

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

 








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


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

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

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

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