Повернення значень

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

Функція operator=() повертає результат шляхом створення тимчасового об’єкта alpha та його ініціалізації за допомогою одноаргументного конструктора у виразі

return alpha(data);

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

а3=а2=а1;

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

alpha& operator=(alpha& a)

На жаль ні, ми не можемо повернути результат за посиланням при роботі з локальними змінними даної функції.

Локальні змінні, тобто створені всередині функції і не оголошені статичними, знищуються після виходу з функції. Але повернення за посиланням повертає у викликаючу програму тільки адресу даних, яка для локальних змінних вказує на дані, що знаходяться всередині функції. При поверненні з функції вказівник зберігає вже таке значення, що не має сенсу. Компілятор може сигналізувати про таку проблему попередженням. Розв’язати таку проблему можна з використанням вказівника this.

 








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


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

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

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

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