从此代码段开始:
CClassA& CClassA::operator =(const CClassA& rhs)
{
return;
}
我有以下问题:
&
是什么意思?rhs
是什么意思? (我只知道它意味着“右手边”)const
是什么意思?答案 0 :(得分:3)
这是一个“会员功能”。它实际上是一个重载的赋值运算符,它定义了将CClassA
的实例分配给另一个CClassA
实例时要执行的操作。 e.g。
CClassA foo; CClassA酒吧; foo = bar; //这将调用重载的赋值运算符。
在这种情况下,&
表示“参考”。也就是说,该函数返回CClassA
引用并将const CClassA
引用作为参数。这与传递值相反,后者会将CClassA
实例的副本发送到函数。引用只传递实例的地址,以避免复制实例的开销。
是的,“rhs”表示右侧。在我的示例foo = bar;
中,您实际上是在说foo.operator=(bar);
。
const
表示常量引用。这意味着函数内部不会更改rhs
。
正如@Seth Carnegie评论的那样,这段代码不会编译。您需要返回CClassA&
,但不会返回任何内容。
答案 1 :(得分:1)
1)这是一个班级成员。你试图重载operator =。完成this link 它在这个主题上得到了更多的帮助
2)&表示您正在传递参考
3)rhs意味着右手边4)const表示常量的正常语义,即你不想改变rhs侧
最重要的是,当你要去的时候 CClass a,b; 然后a = b; 那么这相当于召唤 a.operator = B 强>