【发布时间】:2021-01-11 16:02:35
【问题描述】:
有一个非常相似的问题here 但我不明白以下内容:
假设我有一个用于 2D 数学向量的类,我想定义 setter 函数:
/** Setters **/
Vector2D& setX(double xcoor) {x = xcoor; return *this;}
Vector2D& setY(double ycoor) {y = ycoor; return *this;}
现在,“this”指针包含调用函数的实例的地址。
Vector2D VV(2,4);
VV.setX(1).setY(5);
在这种情况下,“this”具有 VV 实例的地址。那么为什么不直接返回 this 而返回 *this 呢?
【问题讨论】:
-
因为函数返回一个引用,
this是一个指针,*this是一个引用。指针不是引用。 -
但是 *this 意味着取消引用指针,以便获得指针指向的对象。对吗?
-
是的,然后您返回对该对象的引用。
-
是的
*this取消引用一个指针。但是取消引用是一个计算机科学术语,它允许仅在给定内存地址的情况下对对象进行操作。指针不是它指向的对象——它是一个包含对象内存地址的变量。取消引用指针是指使用指针来操作(或访问)指针指向的对象。这并不意味着“获取指针指向的对象”,尽管有时看起来是这样。因此,取消引用指针可以产生引用。但是引用和指针是不同的概念。 -
@Peter 好的,这个答案对我有帮助。谢谢。
标签: c++ class reference this-pointer