为什么临时对象必须有不同的地址?

2023-12-29

我感兴趣的情况是

const int &n1 = 123;
const int &n2 = 123;

我知道这就像字面意思一样123是初始化临时的参数int and const只是一个无聊的编译时检查,但我想知道为什么在这种情况下需要不同的临时变量,而不是n1 and n2两者具有相同的临时性。

I know 规则存在 https://stackoverflow.com/a/53421624/7813604但不知道为什么会有这个规则。


const int &n1 = 123;
const int &n2 = 123;

我想知道在这种情况下需要不同的临时变量的原因。

因为 C++ 委员会可能不关心这个具体案例。他们的想法和目标是提供关于如何在更有用和常见的情况下处理临时变量的规则:评估临时变量的完整表达式链创建、使用和销毁:

class A { /* ... */ };
A make_a();
void consume_a(A&&);
void use_a(A const&);

consume_a(make_a());
use_a(make_a());

很明显make_a()需要产生一个不同的暂时的A每一次。

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

为什么临时对象必须有不同的地址? 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li

随机推荐

  • 如何在 Angular 5 中导入外部 js 文件?

    我需要在我的 Angular 5 项目中使用外部 js 我的例子是这样的 https codepen io sfdsfssdfdf pen opJpJM https codepen io sfdsfssdfdf pen opJpJM 我将
  • 如何在Windows Phone 7中强制使用浅色主题?

    在我的 Windows Phone 7 应用程序中 我想使用浅色主题 无论用户在手机中设置什么主题 怎么做 我需要自定义样式或主题吗 我只想要默认的浅色主题 Thanks Jeff Wilcox 提供了一种使用他开发的主题管理器来实现此目的
  • 对于多对多关系,使用关系数据库好还是nosql好?

    对于多对多关系 使用关系数据库好还是nosql好 假设您有一群用户 每个用户都可以拥有来自同一用户表的朋友 所以它本质上是与其自身的多对多关系 关系数据库中的多对多关系将创建第三个表 现在我想知道假设这个用户表很大 就像里面有数百万人一样
  • 什么是 AU3_Spy.exe?我在哪里可以找到它?

    每当我尝试在 AutoHotkey 中启动 Windows Spy 实用程序时 都会失败并显示错误 无法启动文件 U Software AutoHotkey 1 1 26 00 AU3 Spy exe 最初我以为我下载的文件可能已损坏 然而
  • 如何从 JSON 输出中分离纬度和经度值?

    我正在尝试两个位置之间的两条绘制路线 为此我从 Google Map API Web 服务获取所有点 JSON输出格式 解析后JSON数据和解码点我存储了所有点NSMutableArray 每个索引数组都包含这种类型的值 lt 10 901
  • 在谷歌玩游戏中默默解锁成就,不显示通知

    我正在使用谷歌播放服务 在我的android游戏中取得成就 它实际上是统一的 但并不重要 To unlock achievement I use plugin which calls unlock GoogleApiClient apiCl
  • 如何验证货币字段?

    我有一个带有此货币字段的 ASP NET MVC 4 应用程序 DisplayFormat ApplyFormatInEditMode true DataFormatString 0 c ConvertEmptyStringToNull t
  • 获取通用字典的指定值的多个键?

    从 NET 通用字典中获取键的值很容易 Dictionary
  • 在不使用 WPF 的扩展玻璃框架中绘制文本框

    我正在尝试在表单的扩展玻璃框架上绘制一个文本框 我不会描述这个技术 它是众所周知的 对于那些还没有听说过的人来说 这是一个例子 http www danielmoth com Blog Vista Glass In C aspx http
  • MVC 3 / Razor 中的通用操作链接

    刚刚开始一个新的 MVC 3 项目 我无法获得我在 MVC 2 future 中习惯的强类型通用操作链接和 url 帮助器 我需要推迟哪些 nuget 包和命名空间 Example Html ActionLink
  • 如何安装react(v16.x)和react-scripts(3.x)

    正如标题所示 我不想使用 npx create react app app name 因为该命令安装了react 17x 和react scripts 4 x I tried npm init react app app name scri
  • XML 架构 minOccurs / maxOccurs 默认值

    我想知道 XML 模式规范如何处理这些情况
  • C# 中派生类的可视化

    我有一个基类 代表一个充满小球体的现实世界容器 和一些派生类 这很好用 我的问题是如何进行可视化 我有一个可视化基类的用户控件 为每个派生类都有一个派生的 UserControl 是最佳解决方案吗 还是让一个人为所有人工作更好 Edit 显
  • 如何在 API 级别 < 28 上获取主线程的 Executor

    在 API 级别 28 Pie 上 引入了一种新方法Context获取主线程执行器的类getMainExecutor https developer android com reference android content Context
  • 带颜色条的圆形图

    我正在尝试用颜色条绘制圆形图 几乎像这样 然而 颜色条的最小值当前为1 我希望能够将其设置为 0 import pandas as pd import matplotlib pyplot as plt import matplotlib c
  • 如何使用 MATLAB 的 num2str 格式化输出

    我正在尝试在 MATLAB 中将数字数组作为字符串输出 我知道这很容易使用num2str http www mathworks com access helpdesk help techdoc ref num2str html 但我想要逗号
  • 在 Angular dart 中 type() 的另一种方式

    我完成了 Angular dart 教程 但我有一个问题 要声明可用于依赖注入的类型 我必须这样做 class MyAppModule extends Module MyAppModule type RecipeBookController
  • C 中的静态结构初始化

    我有一个struct输入如下图所示 typedef struct position float X float Y float Z float A position typedef struct move position initial
  • Udev 规则不适用于 Ubuntu 12.04 上的 libusb

    我使用的是 Ubuntu 12 04 5 LTS x86 64 我有一个 USB 设备 它使用 libusb 与计算机进行通信 将其插入计算机并运行通信程序后 出现以下错误 libusb couldn t open USB device d
  • 为什么临时对象必须有不同的地址?

    我感兴趣的情况是 const int n1 123 const int n2 123 我知道这就像字面意思一样123是初始化临时的参数int and const只是一个无聊的编译时检查 但我想知道为什么在这种情况下需要不同的临时变量 而不是