构造函数中带有 const 的 & 符号

2024-01-22

有人可以告诉我为什么我们通常将 const 和 & 与在构造函数中传递的某些对象一起使用吗?

Book::Book(const Date &date);

我在这里遇到的困惑是,通常在 some 函数中使用 & 符号,因为该值是通过引用传递的,并且函数中该变量发生的任何更改都应该在之后反映出来。但另一方面,const 表示不能对该变量进行赋值。

如果有人对此有什么好主意,请告诉我原因。


这样做是为了避免不必要的复制。以下面的代码为例:

Book::Book(Date date):
date_(date)
{
}

当你调用这个构造函数时,它会复制date两次,一次在调用构造函数时,一次在将其复制到成员变量中时。

如果你这样做:

Book::Book(const Date &date):
date_(date)
{
}

date仅复制一次。它本质上只是一种优化。

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

构造函数中带有 const 的 & 符号 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • Android L——在视图上播放波纹效果

    我试图在某个时间在视图上 而不是在被触摸的视图上 发挥连锁反应 来自 Android L 具体来说 当用户成功更改某些文本时 我希望某个视图播放绿色波纹效果以显示成功 有什么办法可以做到这一点吗 我尝试将 RippleDrawable 放入
  • Visual Studio 诊断工具 - 如何更改选定的进程?

    我在用着Diagnostic Tools在 Visual Studio 2015 中调试 SharePoint Web 部件 我依附于一些w3wp exe处理并且窗口显示以下消息 Multiple processes are being d
  • 在 Visual Studio 中创建一个新的 TypeScript 项目

    如何开始在 Visual Studio 中编写 TypeScript 项目 当我创建一个新项目时没有这个选项 我安装了 Visual Studio 2012 以及 TypeScript 插件 我刚刚找到了解决方案 手动安装 VS Exten
  • D3D11CreateDevice() 返回垃圾值并失败

    我刚刚开始用这本书学习直接3D使用 DirectX11 进行 3D 游戏编程 我按照第一个教程进行操作 并收到一个消息框 显示 D3D11CreateDevice Failed 我检查了这个函数的返回值 得到了垃圾值 2005270483
  • 如何在vb.net中查看设计器代码

    我想看看设计师代码 我想看看如何使用或扩展表单生成 myForm 我的意思是在 C 中我可以看到 Designer cs 文件中的代码 但在 vb net 中我看不到 在 VB Net 中 为了查看设计器文件 您必须单击解决方案资源管理器上
  • 报告本地时间而不是 UTC 服务器时间

    我创建了一个页面 其中向用户显示服务器报告的天气数据 时间保存为 UTC 如何从 Blazor 服务器应用程序显示本地用户或浏览器的时间 我遇到了类似的问题并创建了一个名为的库布拉佐尔时间 https github com dustout
  • List 和 IEnumerable 的区别

    在实现这个通用的同时归并排序 http en wikipedia org wiki Merge sort 作为一种代码卡塔 http en wikipedia org wiki Kata 28programming 29 我偶然发现了 IE
  • Shopify:错误:[API] 此操作需要商家批准 write_themes 范围

    我是 Shopify 新手 我正在尝试在本地设置 Shopify 主题套件 我已经创建了一个私人应用程序并设置了我的商店 但是在尝试使用主题套件访问商店时出现此错误 Errors API This action requires merch
  • Silverlight:强制画布失效或重新绘制自身?

    我有一个 Silverlight 应用程序 上面有一个 Canvas 在该画布上 我动态地 绘制 了一堆东西 但向画布添加了控件 我在画布区域之外有一个按钮可以清除内容 对象已被删除 成功 然而 Canvas 区域不会立即刷新 目前 画布本
  • Memcached 最佳实践 - 小对象和大量键还是大对象和少量键?

    I use memcached http www danga com memcached 存储复杂计算的整数结果 我有数百个可以缓存的整数对象 我应该将它们缓存在更复杂的对象中的单个键下 还是应该为对象使用数百个不同的键 我正在缓存的对象不
  • 如何使用 Angular2 将服务注入动态组件

    我有一个使用 DynamicComponentLoader 动态加载另一个组件的组件 然而 动态组件需要注入服务 但是 我不确定如何解决这个问题 我从 Angular io 文档中看到 DynamicComponentLoader 接受 R
  • JavaScript 中变音符号的标题大小写(非 ASCII)

    是否可以创建一个 JavaScript 函数 可以将字符串转换为标题大小写 但可以处理非 ASCII Unicode 字符 例如 使用以下字符 etc 例如 如果字符串是 anders ngstr m 则应将其转换为 Anders ngst
  • 耳机上听不到 SuperCollider 的声音

    我刚刚开始使用超级对撞机学习音频编程 当我播放声音时 我可以在扬声器上听到它 但在耳机上听不到 我在启动服务器时收到以下消息 启动 57110本地主机JackDriver 客户端名称是 SuperCollider SC AudioDrive
  • C#:如何打开 Windows 资源管理器窗口并选择多个文件

    在 Windows Media Player 的库中 您可以选择一个或多个音乐文件 然后 您可以右键单击并在上下文菜单中选择打开文件所在位置 这将为文件所在的每个目录打开一个 Windows 资源管理器窗口 并且将为您选择文件 假设我们的库
  • 尝试使用屏蔽输入对 LSTM Seq2Seq 执行推理时出现 CUDNN_STATUS_BAD_PARAM

    我正在使用 keras 层tensorflow 2 0建立一个简单的基于 LSTM 的 Seq2Seq 文本生成模型 versions我正在使用 Python 3 6 9 Tensorflow 2 0 0 CUDA 10 0 CUDNN 7
  • 如何通过jmx在运行时修改ThreadPoolTask​​Executor

    我在通过 JConsole 修改 MBean 属性时遇到问题 我有一个 Threading bean 它通过以下方式调用 public static void main String args throws Exception JMX ne
  • 尝试使用 localnotification 呈现其视图不在窗口层次结构中的 UIAlertController [重复]

    这个问题在这里已经有答案了 我试图在用户单击本地通知后呈现 AlertView AlertView 有取消或确定选项 extension ViewController UNUserNotificationCenterDelegate fun
  • 我对 Haskell 的重击感到困惑

    The wikibook https en wikibooks org wiki Haskell Laziness说 在这个表达中 let z length 1 5 reverse olleh in z是一声重击 但是这个堆栈溢出 http
  • 如何知道 MySQLnd 是否是活动驱动程序?

    也许这是一个显而易见的问题 但我想确定一下 我如何知道 MySQLnd 是否是活动驱动程序 我正在运行 PHP 5 3 和 MySQL 5 1 37 在 phpinfo 中列出了 mysqlnd 但仅此我无法确定我使用的是 MySQLnd
  • 构造函数中带有 const 的 & 符号

    有人可以告诉我为什么我们通常将 const 和 与在构造函数中传递的某些对象一起使用吗 Book Book const Date date 我在这里遇到的困惑是 通常在 some 函数中使用 符号 因为该值是通过引用传递的 并且函数中该变量