对于以下示例:
#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
为什么在将对象分配给引用时使用副本分配?为什么引用不仅仅更新为指向分配的对象?这是惯例问题还是背后的原因?
答案 0 :(得分:1)
分配给引用会分配给引用所引用的对象,而不是引用本身。因此,您的update
函数等效于:
o2 = ::o;