Для следующего примера:
#include <iostream>
using namespace std;
class Obj {
public:
Obj& operator=(const Obj& o) {
cout << "Copy assignment operator called" << endl;
return *this;
}
};
Obj o;
int update(Obj& o) {
o = ::o;
}
int main() {
Obj o2;
update(o2);
}
Я получаю результат:
Copy assignment operator called
Почему назначение копии используется при назначении объекта для ссылки? Почему ссылка не обновляется, чтобы указывать на назначенный объект? Это условно или есть причина?