在C ++类中赋值给operator =()

时间:2014-09-12 15:58:14

标签: c++ class reference assignment-operator

这是对我之前关于类(Is there an elegant way to swap references in C++?)中引用的问题的跟进。这种方法因不正当使用联合而受到一些批评,其代码不可移植。这次我修改了方法,以使代码更具可移植性。为了简单起见,我现在将说明引用的分配,而不是交换引用。中心思想是使用placement new运算符重新分配引用:

struct A
{
   int& r_;
public:
   A(int& v) : r_(v) {}
   int& get() { return r_; }
   void operator=(const A& a)
   {
      new(this)A(a.r_);
   }
};

如果一个类需要包含的不仅仅是引用作为成员变量,那么所有引用都可以使用相应的赋值运算符分组在基类中。完整的示例可以在这里找到:https://ideone.com/bGcdxP。您如何看待这种方法?是否有任何阻碍其在生产代码中使用的缺点?

0 个答案:

没有答案