微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么引用数组是非法的?

如何解决为什么引用数组是非法的?

回答您关于标准的问题,我可以引用 :

不能有对引用的引用, ,也不能有指向引用的指针。

那是因为引用不是对象并且不占用内存所以没有地址。您可以将它们视为对象的别名。声明一个什么都没有的数组没有多大意义。

解决方法

以下代码无法编译。

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 举报,一经查实,本站将立刻删除。