我读到this指针是一个const pointer(听起来很合逻辑),它可以让我们更改其指向的对象,但不能更改其持有的地址。但是当我这样做时:
#include<iostream>
using namespace std;
class A
{
int val;
public:
class A* fun()
{
return this;
}
};
int main()
{
class A objA;
class A objB;
*(objA.fun())=objB;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
即使返回的指针包含的地址objA,也很容易保留的地址objB。简单变量的类似代码如何失败:
int main()
{
int i;
int *const p=&i;
p=&i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
objA.fun()
Run Code Online (Sandbox Code Playgroud)
计算为的地址objA(换句话说,是&objA)。因此,您正在做的是:
*(&objA) = objB;
Run Code Online (Sandbox Code Playgroud)
等效于:
objA = objB;
Run Code Online (Sandbox Code Playgroud)
因此,您只是复制objB到中objA。