this
是成员函数隐式接收的对象/实例的const ptr,那么return *this
如何返回引用?
据我所知,一个取消引用变量的指针意味着它保存了它的内存地址,所以return *this
应该返回由这个const指针取消引用的值,这是什么?一个对象?
另外,为什么你不能做这样的事情:
Calc cCalc;
cCalc.Add(5).Sub(3).Mult(4);
没有所有成员函数到return *this
?
我想知道指针和引用如何处理对象/实例。
答案 0 :(得分:1)
让我们试着解开:
这是成员函数隐式接收的对象/实例的const ptr
成员函数确实隐式接收此指针。类型是T *或const T *,具体取决于成员函数签名 - 您在const之后获得const放置const关键字。
那么return *会如何返回引用?
*这取消引用指针,从而分别创建类型为T或const T的左值。如果您的问题意味着您如何获得T&来自*这个在const funstion中,你没有的答案,那个尝试将是不正确的代码。
据我所知,一个取消引用变量的指针意味着它保存了它的内存地址,所以返回*这应该返回由这个const指针取消引用的值,这是什么?一个对象?
*这表示实例。它是左值表达式。所以你可以得到它的地址agan(提供与此相同),或者可以将它绑定到引用 - 包括返回的情况。
如果函数返回Calc而不是Calc&或返回一些不同于* this的对象 - 但随后计算结果将最终出现在那个地方。不是你期望的地方:在cCalc。
就目前而言,当所有三个函数都返回*时,首先在此处添加take& cCalc,并返回cCalc。对Sub的下一次调用具有相同的情况。并且也是相乘的。
答案 1 :(得分:0)
添加成员没有Sub功能。编译器给出错误。
但是,如果你返回* this,你将返回你自己的对象(不是引用)。现在你有一个可以使用Sub(3)的cCalc对象。 Sub(3)返回你的对象,可以使用Mult(4)。