这是一个古老的考试问题,它要求我们编写赋值运算符和复制构造函数,在有意义的情况下编写析构函数。
给定以下代码:
class U { /* code not specified here */ };
class A { /* code not specified here */ private: U& u_; };
我了解到答案是:A 持有对 U 实例的 C++ 引用,可以复制但不能重置。因此,您必须:
• 编写一个复制构造函数,将其 U 初始化为 A 源实例引用的同一实例。
• 将其赋值运算符设为私有且不实现
我知道引用无法重置。但是,这是否意味着当类包含引用成员数据时,我永远不能使用赋值运算符?下面的代码有意义吗?以下代码是我自己写的(不是答案)
class U{
public:
int u;
};
class A{
public:
A(U& u):u_(u){}
A& operator=(const A& a){
u_ = a.u_;
return *this;
}
U& u_;
};
int main(){
U u1;
U u2;
A a1(u1);
A a2(u2);
a1 = a2;
a1.u_.u = 1;
a2.u_.u = 2;
cout << "a1.u_.u : " << a1.u_.u << endl;
cout << "a2.u_.u : " << a2.u_.u << endl;
}
提前致谢。