如何获取重载了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;
}
原文地址:https://www.cnblogs.com/SammyLan/p/1880031.html