c++为什么不能建立引用数组?
发布网友
发布时间:2022-05-14 12:05
我来回答
共2个回答
热心网友
时间:2023-10-16 11:44
C++:
引用不是真正的变量。只是变量的别名。
引用的地址是所引用对象的地址,引用的值是所引用对象的值。
引用就是所引用对象本身。
换句话说,引用只是个符号(名字),不是变量,所以也不能有引用数组。
所以引用的初始化和赋值,没有任何相同之处。
所以无法建立引用数组。
如果可以建立引用数组,那么对引用使用取址运算符 &就有了二义性。
热心网友
时间:2023-10-16 11:44
首次,引用的概念,等价与 指针常量。
int n;
int * const ptr = &n;
int &ref = n;
ptr 和 ref 除了语法之外,可以理解为是完全等价的。
常量在定义时必须初始化,同样的引用在定义时也必须初始化。
ok,切入正题,C++对数组的初始化方法,没有额外的定义,而是沿用了C语言的初始化方式。
int a[] = {1, 2, 3};
int *p[] = { a, a + 1, a + 2 };
C++中引入了拷贝构造,即,用初始化列表中的值,拷贝构造数组中的元素。
而拷贝构造函数的形式为:T::T(const T &);
又因为C++不允许引用的引用,所以T不能为引用类型。
所以,在以上框架下,不允许存在引用的数组。
不过,相信你看到这里,会用 常指针数组 实现"引用数组"这个需求了..