Нет. Это разные предметы.
Если вас беспокоит дублирование кода между конструктором копирования и оператором присваивания, рассмотрите следующую идиому с именем copy и swap :
struct MyClass
{
MyClass(const MyClass&); // Implement copy logic here
void swap(MyClass&) throw(); // Implement a lightweight swap here (eg. swap pointers)
MyClass& operator=(MyClass x)
{
x.swap(*this);
return *this;
}
};
Таким образом, operator=
будет использовать конструктор копирования для создания нового объекта, который будет заменен на *this
и выпущен (со старым this
внутри) при выходе из функции.