При выполнении каких инструкций вызывается переопределенная операция присваивания?
Другие предметы Университет Переопределение операций в ООП переопределенная операция присваивания экземпляр класса конструктор копирования ООП объектно-ориентированное программирование инструкции присваивания Новый
Переопределенная операция присваивания в C++ вызывается в нескольких случаях. Давайте разберем каждый из предложенных вами вариантов и определим, при каких именно инструкциях происходит вызов этой операции.
Да, в этом случае вызывается переопределенная операция присваивания. Когда вы пишете что-то вроде:
obj1 = obj2;
где obj1 и obj2 - это экземпляры одного и того же класса, то будет вызвана переопределенная операция присваивания, если она была определена в классе.
Нет, при инициализации нового экземпляра класса не вызывается операция присваивания. Вместо этого вызывается конструктор. Например:
MyClass obj = obj2;
Здесь будет вызван конструктор копирования (если он определен), а не операция присваивания.
Конструктор копирования вызывается при создании нового экземпляра класса на основе существующего. Однако это не связано с операцией присваивания. Например:
MyClass obj1(obj2);
В этом случае вызывается конструктор копирования, а не операция присваивания.
Таким образом, переопределенная операция присваивания вызывается только в случае, когда вы присваиваете одно значение другому для существующих объектов, а не при инициализации или создании нового экземпляра.