如果我可以使用&它是l值,否则是r值?
例如,
int i;
&i
会给出i的地址,但我不能取(i + 5)
的地址,除非我是指针或数组。
问候
答案 0 :(得分:3)
最明显的例外是为您自己的类型重载前缀&
运算符:
#include <iostream>
struct X
{
X* operator&()
{
return this;
}
};
int main()
{
std::cout << &X() << '\n';
}
这会打印临时对象的地址,当我运行它时恰好是0x7fff76012d9f
。