是否有例外规则,如果地址可以使用&它是左值找到?
Is there exception to rule that if address can be find out using & it's lvalue?
是否有任何例外规则,如果我可以使用 & 找到地址,它是左值,否则是右值?
例如,
int i;
&i
会给出 i 的地址,但我不能获取 (i + 5)
的地址,除非我是指针或数组。
此致
最明显的例外是为您自己的类型重载前缀 &
运算符:
#include <iostream>
struct X
{
X* operator&()
{
return this;
}
};
int main()
{
std::cout << &X() << '\n';
}
这会打印临时对象的地址,当我 运行 它时恰好是 0x7fff76012d9f
。
是否有任何例外规则,如果我可以使用 & 找到地址,它是左值,否则是右值?
例如,
int i;
&i
会给出 i 的地址,但我不能获取 (i + 5)
的地址,除非我是指针或数组。
此致
最明显的例外是为您自己的类型重载前缀 &
运算符:
#include <iostream>
struct X
{
X* operator&()
{
return this;
}
};
int main()
{
std::cout << &X() << '\n';
}
这会打印临时对象的地址,当我 运行 它时恰好是 0x7fff76012d9f
。