如果我只有该对象的成员变量的地址,是否可以获取该对象的引用?
class example{
public:
int var;
};
int main(){
example exampleObject;
int* point=&exampleObject.var;
example* objPointer; // can i get objPointer to point to exampleObject only using point
return 1;
}
提醒:请不要定期执行此操作,因为很容易把事情弄乱
#include <iostream>
class example{
public:
int var;
};
int main(){
example exampleObject{15};
int* point=&exampleObject.var;
example* objPointer = reinterpret_cast<example*>(point);
std::cout << objPointer->var;
return 0;
}
现在objPointer
将指向原始对象,但是这仅是由于对象的管理方式而起作用,并且因为既然var
是没有基类的类的第一个属性,所以它的地址将与对象相同,但是如果有的话像这样:
class example{
public:
int var;
int var2;
};
int main(){
example exampleObject{15, 16};
int* point=&exampleObject.var2;
example* objPointer = reinterpret_cast<example*>(point);
std::cout << objPointer->var2;
return 1;
}
它不起作用,因为var2
没有保存在与对象保存位置相同的地址中,因为var
在它之前已经保存了对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句