《C++ Primer》13.1.2节练习

2023-10-31

练习13.6:
拷贝赋值运算符本身是一个重载的赋值运算符,定义为类的成员函数,左侧运算对象绑定到隐含的this参数,而右侧运算对象是所属类类型的,作为函数的参数,函数返回指向其左侧运算对象的引用。
当对类对象进行赋值时,会使用拷贝赋值运算符。
通常情况下,合成的拷贝赋值运算符会将右侧对象的非static成员逐个赋予左侧对象的对应成员,这些赋值操作是由成员类型的拷贝赋值运算符来完成的。
若一个类未定义自己的拷贝赋值运算符,编译器就会为其合成拷贝赋值运算符,完成赋值操作,但对于某些类,还会起到禁止该类型对象赋值的效果。

练习13.7:

由于两个类都未定义拷贝赋值运算符,因此编译器为它们定义了合成的拷贝赋值运算符。
与拷贝构造函数的行为类似,赋值一个StrBlob时,赋值其唯一的成员data,使用shared_ptr的拷贝赋值运算符来完成,因此其引用计数增加1。
赋值一个StrBlobPtr时,赋值成员wptr,用weak_ptr的拷贝赋值运算符进行赋值,引用计数不变,然后赋值curr,直接进行内存复制。

练习13.8:

HasPtr&HasPtr::operator=(const HasPtr &rhs)
{
	auto newps = new string(*rhs.ps);//拷贝指针指向的对象
	delete ps;//销毁原string
	ps = newps;//指向新string
	i = rhs.i;//使用内置的int赋值
	return *this;//返回一个此对象的引用
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《C++ Primer》13.1.2节练习 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • std::bind 重载解析

    下面的代码工作正常 include
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 是否有一个 C++ 库可以从 PDF 文件中提取文本,例如 PDFBox for Java? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 去年 我使用 PDFBox 在 Java 中创建了一个应用程序来获取某些 PDF 文件中的原始文本 现在
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 人脸属性识别 - 使用多任务学习模型在CelebA数据集上进行人脸属性识别任务

    在本博客中 我们将介绍如何使用多任务学习 Multi Task Learning MTL 模型在CelebA数据集上进行人脸属性识别 我们将详细介绍数据准备 模型构建 训练和评估的过程 最后 我们将展示如何使用训练好的模型对新的图像进行属性
  • dn-detr:通过去噪任务加速detr训练

    dn detr 通过去噪任务加速detr训练 论文链接 https arxiv org abs 2203 01305 自DETR问世以来 transformer被引入到了目标检测领域 DETR通过引入query和bipartite grap
  • 基础算法5——双指针

    双指针算法 双指针是一种编程思想 不是某种具体的编程套路或是算法 很多需要双重暴力循环解决的问题 用双指针的思想都可以大大减少复杂度 for i 0 j 0 i lt n i while j lt i check i j j 每道题目的具体
  • 【疑难杂症】解决苹果MacOS升级提示“验证固件时发生错误”,无论如何都无法升级更新,主板Boot Rom、SMC版本号更新!

    如果你试了网上流传的通用解决办法 dmg没出错 修改dns 修改系统时间 断网安装 制作U盘镜像等 还没有升级成功 很可能你和我遇到的是同样问题 我的机器是Macbook Pro 2015 具体型号是mf840 工作原因平时不怎么敢升级系统
  • 2018 公开课盘点学术篇:链接优秀年轻 AI 学者,「大讲堂」让新生 AI 学术力量被看见...

    雷锋网 公众号 雷锋网 AI 科技评论按 2018 年 AI 研习社为大家呈上了一系列公开课 让更多的 AI 学术人员得以分享 传播自己的研究成果 也让科技爱好者们 学生们 其它研究人员们增进了对人工智能相关思维 知识 应用的认识 为国内人
  • 【大数据】Flink 从入门到实践(一):初步介绍

    Flink 从入门到实践 一 初步介绍 Apache Flink 是一个框架和分布式处理引擎 用于在 无边界 和 有边界 数据流上进行 有状态 的计算 Flink 能在所有常见集群环境中运行 并能以内存速度和任意规模进行计算 1 架构 1
  • Git上传文件代码到GitHub(超详细)

    Git上传文件代码到GitHub 超详细 之前用git上传代码到GitHub上 时间一长又忘了 总结一下写下来 后面上传忘了再看 1 新建一个空文件夹 用来上传文件 空文件夹放在那里都可以 2 点进去空文件夹 鼠标右键 使用Git Bash
  • 淘汰赛冠军问题

    问题描述 有n个选手 n为2的K次方 进行比赛 两个选手中胜者参加下一场 负者出局 请求出最后的冠军 比赛的胜负由cmp 函数决定 这里是比较两个字符的大小 分析 本体很快可以想到两种方法 分治法和减治法 分治法 将选手平均分为两组 递归求
  • Github上 10 个开源免费且优秀的后台控制面板

    来自 简书 作者 SevDot 链接 https www jianshu com p 3bc7404af887 Web 开发中几乎的平台都需要一个后台管理 但是从零开发一套后台控制面板并不容易 幸运的是有很多开源免费的后台控制面板可以给开发
  • uniapp AES加密解密

    uniapp里我知道的有两种aes加密解密方式 一 引入crypto js 1 需要在uniapp项目根目录里 打开命令行 执行如下命令 npm install crypto js 2 在项目根目录 创建一个utils文件夹 并创建一个ae
  • windows下ejbCA的安装和配置

    本文是windows平台的ejbCA配置记录 配置过程中参考了很多网上的资料 在此表示感谢 参见 http job2job blog 163 com blog static 1416633120071162154863 http www c
  • 解决Windows因丢失vcruntime140.dll文件无法运行程序问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个vcruntime140 dll文件进行安装 前
  • C#实现图片压缩算法,精简高效(含源码)

    C 实现图片压缩算法 精简高效 含源码 图片压缩可以有效地减小图片文件的大小 加快页面加载速度 并降低带宽占用 本文将介绍一种基于C 语言实现的图片压缩算法 其具有精简高效的特点 可以帮助你快速实现压缩图片的功能 压缩算法主要分为有损压缩和
  • 4.8 服务器上的 Git - GitLab

    4 8 服务器上的 Git GitLab 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 26 初稿 目录 文章目录 4 8 服务器上的 Git GitLab 版本说明 目录 GitLab 1 安装 Figure 50 B
  • WinDbg delete问题

    文章目录 1 测试程序如下 include stdafx h include CBaseDrvTest h int tmain int argc TCHAR argv CBaseDrvTest pBase new CBaseDrvTest
  • django ajax做评论用的哪个库,Django Ajax评论系统

    我想用Ajax创建一个评论系统 我的主要目的是在不刷新页面的情况下获得新的评论 我在我的HTML文件中添加了一些js代码 但是没有用 我的错误在哪里 我该怎么做 在 视图 py def post detail request pk post
  • socket实验——stmp简单邮件代理

    Q A 1 email应用的组成 邮件客户端 邮件服务器 SMTP协议 2 为什么email要使用客户端服务器的结构 而不是直接在用户间建立连接 想象自己不在线和对方不在线的情况 3 SMTP协议 简单邮件传输协议 传输层协议 TCP 端口
  • mui ajax 懒加载,MUI懒加载 - 前端小谢的个人空间 - OSCHINA - 中文开源技术交流社区...

    在各种列表中 有些需要大量的图片 在这些列表结构中使用懒加载可以很快提高加载速度 我们需要引入mui lazyload js和mui lazyload img js两个文件 还有占位图 懒加载 window page fk fn getDo
  • windows环境下部署以太坊私有链

    1 部署环境 1 Windows操作系统 window10 X64 2 以太坊客户端 geth windows amd64 1 8 3 329ac18e exe 3 以太坊钱包 Ethereum Wallet win64 0 9 3 zip
  • 《C++ Primer》13.1.2节练习

    练习13 6 拷贝赋值运算符本身是一个重载的赋值运算符 定义为类的成员函数 左侧运算对象绑定到隐含的this参数 而右侧运算对象是所属类类型的 作为函数的参数 函数返回指向其左侧运算对象的引用 当对类对象进行赋值时 会使用拷贝赋值运算符 通