Оператор копирования

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Оператор копирования

Re: Оператор копирования

BBB » 24 окт 2007, 10:18

Если оператор копирования для класса не определен, то "по умолчанию" при использовании в тексет присвоения одного экземпляра класса другому присиходит банальное копирование всех полей. Если поля класса, скажем, числа или имеют тип класса, в котором определен оператор копирование, то ничего страшного не произойдет.
Но если, скажем, в экземпляре класса есть указатель на какуе-то динамическую область памяти, то это значение также будет просто скопировано, и два экземпляра класса будут ссылаться на одну и ту же область памяти. Что может привести к очень печальным последствиям (например, при удалении одного из экземпляров он, скорее всего, освободит эту динамическую память, а второй экземпляр будет по-пежнему ссылаться уже "в никуда").
В подобных случаях в операторе присвоения делается выделение (или перевыделение памяти и копирование ее содержимого из первого экземпляра во второй).

PS. Кстати, есть еще такое понятие как copy constructor. Где-то в чем-то близкое оператору присвоения, но, все-таки, совсем другое :)

Оператор копирования

Vladimir89 » 23 окт 2007, 22:55

Ктонибудь знает почему для своего класса нужно писать собственный рператора копирвоания ? Просто спросили почему при копировании классическим выдается ошибка (или считается неправильно)

Вернуться к началу