类声明问题

Class Declaration Questions

本文关键字:问题 声明      更新时间:2023-10-16

从代码片段中:

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

我有以下问题:

  1. 它是类成员吗?
  2. &是什么意思?
  3. rhs是什么意思?(我只知道它的意思是"右手边")
  4. const是什么意思?
  1. 这是一个"成员函数"。它实际上是一个重载赋值操作符,它定义了在将CClassA的一个实例赋值给另一个CClassA实例时应该做什么。例如

    CClassA foo;CClassA酒吧;Foo = bar;//这将调用重载赋值操作符

  2. 本例中的&表示"参考"。也就是说,该函数返回一个CClassA引用,并接受一个const CClassA引用作为参数。这与按值传递相反,按值传递将向函数发送CClassA实例的副本。引用只是传递实例的地址,以避免复制实例的开销。

  3. 是的,"rhs"表示右手边。在我的例子foo = bar;中,你实际上说的是foo.operator=(bar);

  4. const在本例中表示常量引用。这意味着rhs将不会在函数内部被更改。

正如@Seth Carnegie所评论的,这段代码无法编译。您应该返回一个CClassA&,但是您什么也没有返回。

1)这是一个类成员。您正在尝试重载操作符=。点击这个链接它在这个话题上得到了更多的帮助

2),表示您正在传递引用

3) RHS表示右手边

4) const在这里指的是常量的正常语义,也就是说,你不想改变RHS侧

最重要的是你什么时候会拥有CClass a、b;然后a=b;那么这就等于a.operator = b