Задать вопрос
keksmen
@keksmen
Just a programmer

Что происходит при присвоении нового значение переменнной, хранящей объект?

Здравствуйте. Прошу кидать только тапками по-легче, чтобы не было очень больно, ибо только начал изучать C++. В гугле адекватных ответов найти не удалось (хотя, может плохо искал).

Преамбула: есть две переменные a и b, обе типа MyClass (не указатели, то бишь объекты живут в стековой памяти и должны быть уничтожены при выходе из функции) и обе уже инициализированы.
MyClass a(...), b(...);

Собственно, сам вопрос: Что происходит при присвоении переменной a значения переменной b?
a = b;
Если конкретно, интересуют следующие моменты:
  1. Происходит ли уничтожение объекта, хранящегося в a? Если да, то в какой момент?
  2. Объект, хранящийся в b, копируется побитово или с использованием конструктора копирования?
    P.S. эта часть вопроса возникла когда удалось выполнить присваивание без наличия соотв. конструктора.
  • Вопрос задан
  • 282 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Происходит ли уничтожение объекта, хранящегося в a?

Перечитал вопрос) Если оператор не перегружен, то данные будут затёрты, сам объект a будет бинарной копией b. Если перегружен, то произойдет лишь то, что там описано.

Объект, хранящийся в b, копируется побитово или с использованием конструктора копирования?

С использованием оператора копирующего присваивания =3 По умолчанию он копирует объект побитово (так же поступает умолчательный конструктор копирования, кстати).

удалось выполнить присваивание без наличия соотв. конструктора.

За вас дефолтные реализации дописал компилятор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы