C++ &引用;xvalue具有标识“0”;,为什么我能';这不是艾德里斯吗
弄清楚C++ &引用;xvalue具有标识“0”;,为什么我能';这不是艾德里斯吗,c++,c++11,C++,C++11,弄清楚 “has identity”:地址、指针,用户可以确定两个副本是否相同 xvalue:具有标识,可以从(例如,将左值转换为右值引用的结果)移动 弄清楚 以下表达式是xvalue表达式: 3.a.m,对象表达式的成员,其中a为右值,m为非引用类型的非静态数据成员 举例说明 struct X { int n; }; X{4}; // prvalue: does not have an identity X{4}.n; // xval
3.a.m,对象表达式的成员,其中a为右值,m为非引用类型的非静态数据成员 举例说明
struct X { int n; };
X{4}; // prvalue: does not have an identity
X{4}.n; // xvalue: does have an identity and denotes resources
// that can be reused
但是当我尝试使用&
来cout
X{4}.n的地址时,编译器拒绝编译
cout << &X{4}.n << endl; // error C2102: '&' requires l-value
cout以下是标准的内容:
一元&
运算符的结果是指向其操作数的指针。
操作数应为左值或限定id。
因此,不能使用&
运算符获取右值的地址。根据,不能获取右值的地址。因为xvalue属于右值,所以不能获取其地址。