如何解决为什么引用数组是非法的?
回答您关于标准的问题,我可以引用 :
不能有对引用的引用, ,也不能有指向引用的指针。
那是因为引用不是对象并且不占用内存所以没有地址。您可以将它们视为对象的别名。声明一个什么都没有的数组没有多大意义。
解决方法
以下代码无法编译。
int a = 1,b = 2,c = 3;
int& arr[] = {a,b,c,8};
C++ 标准对此有何评论?
我知道我可以声明一个包含引用的类,然后创建该类的数组,如下所示。但我真的很想知道为什么上面的代码不能编译。
struct cintref
{
cintref(const int & ref) : ref(ref) {}
operator const int &() { return ref; }
private:
const int & ref;
void operator=(const cintref &);
};
int main()
{
int a=1,b=2,c=3;
//typedef const int & cintref;
cintref arr[] = {a,8};
}
可以使用struct cintref
而不是const int &
模拟引用数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。