这是一个赋值运算符。 &rhs != this
令人困惑。我的问题:rhs 是 Message 类型的引用。 &rhs
是什么意思? &
做什么(引用的内存地址?)?
另一个问题是关于 return *this
。因为我们想要一个 Message 类型的引用,但是 *this 是一个 Message 类型的对象,对吧?我们如何将对象返回给引用?
Message& Message::operator=(const Message &rhs)
{
if (&rhs != this)
{
some functions;
}
return *this;
}
最佳答案
&rhs
表示引用所引用的对象的地址。
Message a;
const Message &rhs = a;
if (&rhs == &a) std::cout << "true" << std::endl;
这将打印 true
。
引用不是不同的对象;它只是指针的语法糖,它指向引用它的同一个对象。所以当你写 return this
时,它返回一个指向对象的指针,但是如果你写 return *this
,它返回一个 copy对象,或对象的引用,具体取决于返回类型。如果返回类型是 Message &
,那么您就告诉编译器“不要复制,而是返回相同对象”。现在 same 对象只不过是一个引用。对象的引用可以随时进行。例如,见上面rhs
的声明;它是 const Message & rhs = a
,因为目标类型被称为引用类型,所以您正在引用对象 a
的 rhs
>。就这么简单。
关于c++ - &rhs != this,将引用与指针进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191628/