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
相关产品推荐
相关产品推荐

