c++ - this 指针作为 const 指针

标签 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;
}

即使返回的指针包含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/

相关文章:

c++ - 在大型阵列上查找编辑距离的更有效方法

c# - 理解 C# 中的基础

java - 在 Java 中如何只扩展函数而不是整个类?

javascript - javascript 中安全返回私有(private)字段

javascript - 为什么会出现 "this"行为?

c++ - "no matching function"在自定义类型上使用push_back时调用错误

c++ - 了解 OPT 算法

c++ - 没有中间表达式的三元运算符

javascript - 无法分配这个。对象原型(prototype)中的变量

javascript - 了解 JavaScript 中匿名函数中的 "this"