我读到 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;
}
即使返回的指针包含objA
的地址,它也很容易包含objB
的地址。简单变量的类似代码怎么可能失败:
int main()
{
int i;
int *const p=&i;
p=&i;
return 0;
}
最佳答案
objA.fun()
计算到 objA
的地址(换句话说,它是 &objA
)。所以你正在做的是:
*(&objA) = objB;
相当于:
objA = objB;
所以你只是将 objB
复制到 objA
中。
关于c++ - this 指针作为 const 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57126437/