该指针作为const指针

Agr*_*cus 1 c++ oop this

我读到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)

Nik*_* C. 8

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