繁体   English   中英

数组类型不可分配

[英]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

[8.5]如何重新设置引用以使其引用不同的对象?

没门。

您不能将引用与引用分开。

与指针不同,一旦引用绑定到对象,它就不能 “重新”到另一个对象。 引用本身不是一个对象(它没有标识;获取引用的地址会给出引用的地址;记住:引用它的引用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM