You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何通过类内的this引用获取对象的内存地址

如何在C++类成员函数中获取当前对象的内存地址

当然可以实现你的需求!问题出在你对this指针的理解上,咱们一步步说清楚:

核心问题:this本身就是指向对象的指针

在类的成员函数里,this是一个隐式存在的指针,它直接指向当前调用该函数的对象实例。也就是说,this的值就是你想要的对象内存地址,完全不需要再用&取地址。

你之前写的cout << &this << endl;之所以报错,是因为&this试图取this这个指针本身的地址(而不是它指向的对象的地址),而且C++标准明确规定this是一个右值,不能对它取地址,所以编译器会直接报错。

正确的实现方式

直接输出this即可,来看完整示例:

#include <iostream>
using namespace std;

class Obj {
public:
    void method() {
        // 直接输出this,就是当前对象的内存地址
        cout << "类内获取对象地址:" << this << endl;
    }
};

int main() {
    Obj obj;
    cout << "类外获取对象地址:" << &obj << endl;
    obj.method();
    return 0;
}

运行这段代码,你会看到类内和类外输出的地址完全一致,这就达到了你的需求。

补充说明

  • 类外的&obj:obj是对象实例,&取的是这个实例的内存地址,和类内this的值完全等价。
  • this的类型:对于Obj类来说,非const成员函数中this的类型是Obj*,const成员函数中this的类型是const Obj*,它的值始终是当前对象的地址。

内容的提问来源于stack exchange,提问作者Mansoor Ahmed Memon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:12:41