什么意味着c ++中的那种声明?

时间:2011-07-11 20:52:28

标签: c++

CSmth & CSmth::operator = (const CSmth & rhs)
{
    return *this;
}

3 个答案:

答案 0 :(得分:2)

这是一个赋值运算符,所以你可以写:

CSmth a;
CSmth b;
a = b;

除了返回对第一个附录的引用之外,实际的实现没有任何用处。更标准的实现是:

CSmth & CSmth::operator = (const CSmth & rhs) {
    if (this != &rhs) // protect against invalid self-assignment
    {
        do_whatever_required_to_copy_rsh_on_to_this;
    }
    return *this;
}

答案 1 :(得分:1)

它是一个赋值运算符,用于将rhs对象的值赋给当前(this)。但是,它尚未实施。

答案 2 :(得分:0)

operator =是'Copy Assignent Operator'。任何时候你看到

A a, b;
a = b;

最简单的情况是:

A & A::operator=(A const &rhs);

a.operator=(b);

要解决这个问题:

  • operator =是A的成员。操作员可以访问调用操作符的对象中的所有变量,也就是左侧变量。
  • operator =作为参数引用另一个A,即赋值的右侧。良好的编码实践表明,您只能从此函数中访问rhs的公共接口。 **
  • operator =返回对A的引用,按照惯例,它位于赋值的左侧,或*this。此返回很重要,因为它允许您链接分配,如:A a, b, c, d; a = b = c= d;

对operator =的调用应该将右侧对象的状态“复制”到左侧对象中。因为看起来我们正在进行分配,所以这称为“复制分配操作员”

**将变量表示为'private'会使该变量对该类私有,而不是该对象。您可以从复制赋值运算符中完全访问传递对象的私有实现,但这不是一个好主意,因为它违反了对象封装等等。