gpt4 book ai didi

c++ - &rhs != this,将引用与指针进行比较?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:38 26 4
gpt4 key购买 nike

这是一个赋值运算符。 &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,因为目标类型被称为引用类型,所以您正在引用对象 arhs >。就这么简单。

关于c++ - &rhs != this,将引用与指针进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com