如何获取重载了operator &的类对象的实际地址?
我们可以通过将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;
}