我正在学习C++和指针,之前以为已经理解了指针,但看到这个后我就有点糊涂了。
在一侧,星号(*)操作符用于解引用,也就是返回指向的地址中存储的值,而&操作符则相反,它返回值在内存中的存储地址。
现在我正在阅读关于赋值重载的内容,它说“我们返回*this
,因为我们想返回对象的引用”。尽管从我所读的内容来看,*this
实际上返回的是this的值,如果我们想要返回对象的引用,实际上应该返回&this
。
这是怎么回事呢?我猜我可能缺少了什么,因为我没有在其他地方找到这个问题的答案,但根据*解引用、&获取引用的逻辑,这个解释似乎完全相反。
例如:
struct A {
A& operator=(const A&) {
cout << "A::operator=(const A&)" << endl;
return *this;
}
};
this
是指向当前对象的指针。因此,使用 指针 运算符&
(例如&this
)将给我们一个指向对象的指针的指针(在您的情况下类型为A**
)。您需要使用解引用运算符*
来获取对象本身。 - Some programmer dude*this
解引用 this 指针,给出当前对象。请记住,this
是一个指针而不是一个对象。根据上下文,&
有多个含义。它可以是一个引用或返回地址。 - drescherjm