c++为什么不能建立引用数组?
2个回答
展开全部
首次,引用的概念,等价与 指针常量。
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不能为引用类型。
所以,在以上框架下,不允许存在引用的数组。
不过,相信你看到这里,会用 常指针数组 实现"引用数组"这个需求了..
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不能为引用类型。
所以,在以上框架下,不允许存在引用的数组。
不过,相信你看到这里,会用 常指针数组 实现"引用数组"这个需求了..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询