[英]array type is not assignable
我需要创建一个对数组的两个引用,它可以引用同一个数组。 我尝试了以下方法:
extern int (&a)[];
extern int (&b)[];
int main()
{
b = a; // error: array type 'int []' is not assignable
}
有没有办法在c ++中做到这一点?
两件事:第一个数组不能出现在赋值运算符的左侧。 cppreference可能直接从标准中获取文本,特别是:
§8.3.4
5不能修改数组类型的对象,见3.10。
另外,就像cppreference所说,数组是左值:
§3.10
1表达式根据图1中的分类法进行分类。 - 左值(所谓的历史,因为左值可以出现在赋值表达式的左侧)指定一个函数或一个对象。
虽然,标准明确指出无法修改数组类型的对象,因此得出结论:数组(对象)不能出现在赋值运算符的左侧。
其次,如果你这样做,编译器可能不会抱怨:
int a = 50, c = 42;
int& b = a;
b = c;
b = 80;
std::cout << a << " " << c; // 80 42
你会看到c
保持不变。 请参阅parashift C ++ - faq 。
没门。
您不能将引用与引用分开。
与指针不同,一旦引用绑定到对象,它就不能 “重新”到另一个对象。 引用本身不是一个对象(它没有标识;获取引用的地址会给出引用的地址;记住:引用是它的引用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.