我正在学习CPP考试,其中一个问题是这样的:"如何获取变量地址,是否有任何无法获得地址的变量"?
所以第一个很简单,你只需要使用"&"运算符,但是有没有变量(请注意,这个问题只涉及变量!),其地址无法用&符号访问?
任何帮助,将不胜感激
但是有没有变量(请注意,这个问题只涉及变量!),其地址无法用&符号访问?
我认为您的内容中的问题与标题中的问题不同.我假设你的内容中的那个是你想要的.
有些变量的地址无法通过&符号获得,因为您可以重载该运算符.
下面的代码,&a不会给你的地址a.
#include <iostream>
struct foo {
int operator &() {
return 900;
}
};
int main() {
foo a;
std::cout << (&a) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
注意:这种变量的地址可以通过其他方法获得.基本上,原则是擦除类型,以便重载操作符不起作用.std::addressof实现了这个功能.