您的位置:首页 > 运维架构

如何获取重载了operator &的类对象的实际地址?

2010-10-10 17:14 246 查看
我们可以通过将reinterpret_cast将类对象强制转换成内置类型的引用,然后对其进行取地址操作如下

代码

#include <iostream>
using namespace std;

struct A
{
int * p;
int *operator&(){return p;}
};

template<class T>
T * addressof(T & val)
{
return reinterpret_cast<T*>(&reinterpret_cast<int&>(val));
}

template<class T>
T const * addressof(T const & val)
{
return reinterpret_cast<T const*>(&reinterpret_cast<int const&>(val));
}

int main()
{
A a;
a.p = NULL;
A * pA = NULL;
pA =addressof(a);
cout<<pA<<endl;

A const ca;
A const*pca;
pca = addressof(ca);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: