是否有例外规定,如果可以使用&找到地址这是左值?

时间:2015-06-07 12:37:53

标签: c++ c++11 memory-address lvalue rvalue

如果我可以使用&它是l值,否则是r值?

例如,

int i;

&i会给出i的地址,但我不能取(i + 5)的地址,除非我是指针或数组。

问候

1 个答案:

答案 0 :(得分:3)

最明显的例外是为您自己的类型重载前缀&运算符:

#include <iostream>

struct X
{
    X* operator&()
    {
        return this;
    }
};

int main()
{
    std::cout << &X() << '\n';
}

这会打印临时对象的地址,当我运行它时恰好是0x7fff76012d9f