类声明问题

时间:2011-12-02 03:59:17

标签: c++

从此代码段开始:

CClassA& CClassA::operator =(const CClassA& rhs)
{
     return;
}

我有以下问题:

  1. 是班级成员吗?
  2. &是什么意思?
  3. rhs是什么意思? (我只知道它意味着“右手边”)
  4. const是什么意思?

2 个答案:

答案 0 :(得分:3)

  1. 这是一个“会员功能”。它实际上是一个重载的赋值运算符,它定义了将CClassA的实例分配给另一个CClassA实例时要执行的操作。 e.g。

    CClassA foo; CClassA酒吧; foo = bar; //这将调用重载的赋值运算符。

  2. 在这种情况下,&表示“参考”。也就是说,该函数返回CClassA引用并将const CClassA引用作为参数。这与传递值相反,后者会将CClassA实例的副本发送到函数。引用只传递实例的地址,以避免复制实例的开销。

  3. 是的,“rhs”表示右侧。在我的示例foo = bar;中,您实际上是在说foo.operator=(bar);

  4. 在这种情况下,
  5. const表示常量引用。这意味着函数内部不会更改rhs

  6. 正如@Seth Carnegie评论的那样,这段代码不会编译。您需要返回CClassA&,但不会返回任何内容。

答案 1 :(得分:1)

1)这是一个班级成员。你试图重载operator =。完成this link  它在这个主题上得到了更多的帮助

2)&表示您正在传递参考

3)rhs意味着右手边

4)const表示常量的正常语义,即你不想改变rhs侧

最重要的是,当你要去的时候 CClass a,b; 然后a = b; 那么这相当于召唤 a.operator = B