引用的定义相互矛盾

2024-02-12

我正在学习 C++ 中的引用。特别是,我了解到引用不是实际对象。相反,它们引用了其他一些对象。也就是说,引用只是其他对象的别名。

然后我遇到了this https://isocpp.org/wiki/faq/references#overview-refs其中说:

重要提示:尽管引用通常是使用底层汇编语言中的地址来实现的,但请不要将引用视为指向对象的滑稽指针。引用就是对象,只是有另一个名称。它既不是指向对象的指针,也不是对象的副本。它是物体。没有任何 C++ 语法可以让您独立于引用的对象对引用本身进行操作。

我知道上面的引用意味着我们无法将引用本身与它所引用的对象分开进行操作,但它仍然似乎暗示着“引用是一个对象”。

另外,我遇​​到过下面给出的句子:

在 ISO C++ 中,引用不是对象。因此,它不需要任何内存表示。

我没有第二条引文的链接,但我在某处的一篇帖子中读到了它。

我的问题是,假设第二个引用也来自标准(可能并非如此),这两个引用的陈述是否相互矛盾。或者至少第一句话是有误导性的。哪一个是正确的。

我目前的理解(通过阅读《C++ Primer 5th Edition》等书籍)是引用是对象的别名。这让我想到它们不应该占用内存中的任何空间。


重要的note:尽管引用通常是使用底层汇编语言中的地址来实现的,但请不要将引用视为指向对象的滑稽指针。引用就是对象,只是有另一个名称。 ...

注释是非正式的,通常不应被解释为严格的规则。如果解释与标准规则相矛盾,那么该解释就是错误的。

引用和对象是不同类型的实体。引用并不是一个与其命名的对象不同的对象。不可能形成指向引用的指针。 “指向引用的指针”甚至不是有效的类型类别。

该注释试图说引用“是”它所命名的对象,因为使用引用就是使用所引用的对象。

我正在考虑确认引用是否占用任何空间

参考文献要么占用空间,要么不占用空间。由语言实现来确定在每种情况下是否需要空间。

标准报价:

[dcl.ref] 未指定引用是否需要存储


在标准规范之外,如果您想要使用空间的引用示例,请尝试向类中添加引用成员,您很可能会观察到类的大小增加。

由于指针占用空间,因此引用也应该占用空间。 ...

指针确实在标准指定的抽象机中占用空间。但如果你从不观察存储,那么存储在实践中完全有可能不存在。引用和指针之间的一个显着区别是您无法直接观察引用的存储。

哲学家:“如果一棵树倒下抽象机器周围没有人观察它,是吗?有效果?"

优化者:“如果我能帮助的话就不会。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

引用的定义相互矛盾 的相关文章

随机推荐

  • 在 CSP 中不使用“unsafe-eval”的 Vuejs 浏览器扩展

    我使用 Vuejs 构建了一个浏览器插件 并使用 Laravel Mix 作为我的构建过程 我的所有 vue 模板都在单个文件组件中 一切都工作得很好 直到我从插件清单中的 CSP 中删除 unsafe eval 火狐浏览器显示错误 Con
  • 从 Lua 中的(最简单的)函数直接返回表条目

    我想编写最简单的函数 让我在无名表中返回所需的值 并且 ideally 它应该是这样的 function RL MyTool Version n return 0 4 0 20221003 0230 13 5 5 n end 但是 当然 这
  • 在 HTML/CSS 中创建列的最佳方法

    我正在寻找一种显示 3 列内容的方法 我找到了一种显示环绕列的方法 但我不希望在该页面上使用这种方法 我正在寻找一种方式来表达
  • 导入错误:Mac 上没有名为 lxml 的模块

    我在运行 Python 脚本时遇到问题 它显示以下消息 ImportError No module named lxml 我想我必须安装一些名为 lxml 的东西 但我确实是 Python 的新手 对此我并没有太多的想法 根据我在其他线程中
  • PHP 中的自动加载器 - 一次运行两个

    我了解如何注册自动加载器 甚至如何创建自动加载器 这根本不是问题 主要问题是 如何让两个自动装载机并排运行以执行以下操作 class project one folder class extends project two folder c
  • 如何在 Java 中播放声音?

    我希望能够在我的程序中播放声音文件 我应该去哪里看 我编写了以下代码 效果很好 但我认为它只适用于 wav format public static synchronized void playSound final String url
  • OpenSSL 中 PEM 格式的默认密码是什么?

    我使用 openssl 生成密钥 证书 openssl exe req x509 days 1000 newkey rsa 1024 keyout key pem out cert pem 它提示输入密码 我猜测密码是用于密钥加密的 但是我
  • ALV网格只加载前64行,如何更改默认加载

    情况 我已经为 SAP GUI 脚本创建了一个查找功能 如果网格行在特定列中具有特定值 则双击它 这会触发加载特定的相关数据 我的网格少于 300 行 因此加载如此多的数据不会对现代计算机造成压力 Issue 我遇到的问题是 从 SAPGr
  • 从模板中的 django 表单中仅获取一个字段

    我有一种形式 class FormLogin forms Form email forms EmailField max length 150 name forms CharField max length 20 如何在模板中仅添加电子邮件
  • 注册的elephantbird仍然显示错误2998

    grunt gt register home piyush Desktop pro json simple 1 1 1 jar grunt gt register home piyush Desktop pro elephant bird
  • Netlogo中有NOOP吗?

    我正在寻找一种在 netlogo 中什么也不做的方法 在其他编程语言中 这称为无操作方法 有没有办法可以在 netlogo 中做到这一点 您可以非常轻松地编写自己的无操作过程 to no op end usage to go no op e
  • 将画布原点设置为左下角

    有没有办法将原点设置为画布的左下角 我尝试按 1 缩放 但之后一切都颠倒了 我需要制作类似坐标系的东西 但只有正部分 第一象限 所以我需要它从左下角的 0 0 开始 ctx translate 0 canvas height ctx sca
  • 任何仅忽略“连接由对等方重置”IOExceptions 的方法

    由于网络问题 我对来自套接字读取调用的大量 IOException 感到非常恼火 通常 这仅意味着有人杀死了子进程或网络严重故障 VPN 连接断开等 我的服务器无法执行任何操作 但我真的不想在日志文件中看到所有这些错误 java中有没有办法
  • 为什么张量流分类器在移动设备上的准确度低于笔记本电脑

    我使用 2 个 googleCodelabs 重新训练了自定义张量流模型 其链接如下 诗人 1 的 Tensorflow https codelabs developers google com codelabs tensorflow fo
  • 使用 WordPress $wpdb 将数据插入 WordPress 数据库中的表中

    我正在开始插件开发 并已按照 WordPress Codex 网站上的教程进行操作 我现在陷入困境 我有一个名为 wp imlisteningto 的数据库 其中wp 插入使用 table name wpdb gt prefix imlis
  • “功能”和“功能”有什么区别!在 VIM 中?

    我看到很多 函数 的用法 在其他 vimrc 文件中 但没有易于找到的 function 文档 功能 和 功能 有什么区别 help user functions 当具有此名称的函数已存在且 为未使用时会给出错误消息 当使用 时 现有功能会
  • 向 TinyMCE 文本区域添加边框半径

    是否可以为 TinyMCE 的文本区域添加边框半径 我的输入字段等上有圆角 但我无法让它在我的文本区域上工作 这有点杀了我 可能是因为 TinyMCE 将它变成了 IFRAME 有没有办法解决 多谢 一种解决方案是使用editor css设
  • Tomcat JDBC 连接池:testOnBorrow 与 testWhileIdle

    由于各种原因 池中的连接可能会变得无效 服务器连接超时 网络问题 我的理解是 Tomcat JDBC 连接池不对其向应用程序提供的连接的有效性提供任何保证 为了防止 实际上只是降低风险 从池中获取无效连接 解决方案似乎是配置连接验证 验证连
  • 编写对空格敏感的解析器规则,同时从词法分析器中跳过 WS

    我在处理空白时遇到一些麻烦 在以下语法摘录中 我设置了词法分析器 以便解析器跳过空格 ENTITY VAR user resource INT DIGIT DIGIT ID LETTER LETTER DIGIT SPECIAL ENTIT
  • 引用的定义相互矛盾

    我正在学习 C 中的引用 特别是 我了解到引用不是实际对象 相反 它们引用了其他一些对象 也就是说 引用只是其他对象的别名 然后我遇到了this https isocpp org wiki faq references overview r