c++ primer 13.22练习(值行为的类)

C++ PRIMER PLUS 第六版编程答案(三) C++ primer plus 第六版 中文版 第四章 编程答案 阅读详情

13.22

#include <iostream>
#include <memory>
#include <string>
#include <vector>
using namespace std;

class HashPtr{
public:
	HashPtr(const string& s=string()) :ps(new string(s)), i(0) {}
	//定义值行为的拷贝构造函数
	HashPtr(const HashPtr& h) :ps(new string(*h.ps)), i(h.i) {}

	//定义值行为的赋值运算符
	HashPtr& operator= (const HashPtr&);
	HashPtr& operator= (const string&);

	//解引用运算符
	string& operator* ();

	//析构函数
	~HashPtr(){ delete ps; }
private:
	string *ps;
	int i;
};

inline
HashPtr& HashPtr::operator=(const HashPtr& h)
{
	auto newps = new string(*h.ps);//注意此处一定要先拷贝
	delete ps;//再销毁原string,注意顺序
	ps = newps;

	i = h.i;
	return *this;
}

inline
HashPtr& HashPtr::operator=(const string& s)
{
	auto newps = new string(s);
	delete ps;//销毁旧指针
	ps = newps;

	/*
	*习题册上给出的是*ps=s;return *this;这样的话ps指向的就是s,对*ps操作就是对s操作,不符合值行为
	*并且ps不再指向动态分配的内存单元了,这是不合适的。
	*/
	return *this;
}

inline
string& HashPtr::operator*()
{
	return *ps;
}

int main()
{
	HashPtr h("Hello world");//构造函数
	HashPtr h2(h);//拷贝构造函数
	HashPtr h3 = h;//赋值运算符

	cout << *h << endl;
	cout << *h2 << endl;
	cout << *h3 << endl;

	h2 = "Nihao";
	h3 = "Shijie";

	cout << *h << endl;
	cout << *h2 << endl;
	cout << *h3 << endl;

	system("pause");
	return 0; 
}


C++ Primer 从入门到放弃 之 第二章 练习题 第二章 练习题 阅读详情

相关推荐

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 245

C++ primer plus 4.13 编程练习

good good study

katz-blog 764

水文预报新手别怕!用Matlab 18小时搞定马斯京根法参数K和x(附完整代码)

本文详细介绍了如何使用Matlab在18小时内快速掌握水文预报中的马斯京根法参数K和x的求解方法。通过完整的代码示例和分步解析,帮助新手从理论到实践快速跨越,解决传统手工试算耗时耗力的问题,提升水文预报的效率和精度。

weixin_42573113的博客 256

C++ Primer 第五版 中文版 练习 13.22 个人code

C++ Primer 第五版 中文版 练习 13.22 题目:假定我们希望HasPtr的行为像一个值。即,对于对象所指向的string成员,每个对象都有一份自己的拷贝。 我们将在下一节介绍拷贝控制成员的定义。 但是你已经学习了定义这些成员所需的所有知识。在继续学习下一节之前,为HasPtr编写拷贝构造函数和拷贝赋值运算符。 答: 由于我用的是vs 2013

jierandefeng的专栏 947

生信分析实战指南:Linux环境下EMBOSS的安装与核心功能详解

本文详细介绍了在Linux环境下安装和使用EMBOSS工具包的实战指南,涵盖源码编译、包管理器安装和Conda安装三种方法,并演示了序列比对、序列特征提取和引物设计等核心功能。EMBOSS作为生物信息学领域的开源工具集,适用于序列分析、蛋白质结构预测等多种任务,帮助研究人员高效完成生信分析工作。

weixin_29202213的博客 464

【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?

一、录音播放数据处理过程介绍 (1)TX方向 麦克风(硅麦克风或者主机体麦克风)采集模拟音频信号,经过内部CODEC芯片中的adc转换为数字信号,在经过高通音频DSP处理音效后编码为wav/aac/amr/mp3等格式文件。 (2)RX方向 音频文件经过解码、重采样还原为pcm数据,经过DSP处理音效后送到内部CODEC,然后经过DAC转换为模拟信号,送到喇叭。 二、分析步骤 1...

crow_ch的博客 5971

三五法则以及行为像值的类和行为像指针的类

看C++primer中,看到行为像值的类和行为像指针的类中,实际上思路非常的简单,对于行为像值的类而言,实际上就是每个实例化的对象都有一份备份,那么每个实例化的对象如果申请了默认析构函数没有办法析构的类外空间的时候(比如在类中有string或者一些动态申请内存的容器的时候)就需要各自单独释放,这种释放实际上不仅仅是要写进单独的析构函数中,比如我们在重载赋值操作符(=)的时候也需要单独的释放空间。我

XDMonkey 2701

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 946

C++ Primer(第五版) 13.2--13.21节练习

13.22 HasPtr类的拷贝构造函数和拷贝赋值运算符代码如下: #include <iostream> #include <string> using namespace::std; class HasPtr { public: HasPtr(const string &s = string()): ps(new string(s)), i(0) ...

wlli1985的博客 284

【ROS2实体机械臂驱动】封装珞石ROS2驱动库ros2_rokae_driver_lib

这一篇文章将封装为,和之前一篇文章《ROS2 编译、打包、封装三方库(Knet为例)_ros插件编译成静态库-优快云博客》写的封装,区别在于优化了cmake dependencies和include等属性和宏定义,同时对于多库内部依赖的情况做了特定处理,更加方便外部调用。其中珞石的编译参考博主之前的文章rokae xCoreSDK C++测试使用,这里不再做赘述。通过这篇文章对于如何打包机械臂厂家提供的三方库做了进一步说明,方便用于不同机械臂厂家的三方库封装调用。!!

机器人梦想家 Bing Lee 1398

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1633

C++ Primer 第五版 中文版 练习 13.26 个人code

C++ Primer 第五版 中文版 练习 13.26 题目: 对上一题中描述的StrBlob类,编写你自己的thsg

jierandefeng的专栏 958

Python爬虫:爬取拼多多平台商品信息、销量、价格等数据

在本篇博客中,我们将深入探讨如何使用Python爬虫技术爬取拼多多平台的商品信息,包括商品的标题、销量、价格等详细数据。拼多多的商品页面通常是分页展示的,因此我们需要遍历多个页面,获取所有商品的信息。每个商品在拼多多平台上都有一个唯一的商品ID,我们可以通过该ID访问商品页面。通过以上的技术方案和代码示例,你已经掌握了如何使用Python爬虫获取拼多多平台上的商品信息、销量、价格等数据。等技术,解决拼多多平台的反爬虫机制,成功抓取我们所需的商品数据。,我们能够应对拼多多的反爬虫机制,稳定地获取到商品数据。

2201_76125261的博客 3656

C++Primer(第五版 )第十三章 拷贝控制 章节编程练习

练习13.1 拷贝构造函数是什么?什么 时候使用它? 拷贝构造函数第一个参数是一个类类型的引用,其他的参数都有默认值。 当拷贝初始化发生时,该拷贝初始化需要拷贝构造函数或移动构造函数。 拷贝初始化当使用=时会发生。 将一个对象作为实参 ...

qq_44741516的博客 1244

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

c++ Primer 第七章:类 练习答案记录

c++ Primer 第七章:类 练习答案记录

Is_Superman的博客 2025

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Natron Charcoal 滤镜节点详解:参数、输入端口与自动文档生成机制

本文以 Natron 官方文档中的 Charcoal 节点参考页(`Documentation/source/plugins/net.fxarena.openfx.Charcoal.rst`)为主体,完整讲解该节点的功能定位、输入端口、全部控制参数及其默认值;同时结合仓库源码,说明这份“看起来手写”的插件文档实际上是如何由 Natron 自身的文档生成流水线自动产出的,帮助你在阅读 Natron

gitblog_00062的博客 625

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++ Primer 第十三章 13.2 拷贝控制和资源管理 练习和总结

13.2拷贝控制和资源管理 练习 13.22 这个练习是错误的示范,正确的示范在练习13.23中 class HasPtr { public: HasPtr(const std::string& s = std::string()) :ps(new std::string()), i(0) {}; HasPtr(const HasPtr& hasptr) :ps(new str...

大琪子的博客 318

C++ Primer: Chapter 13 Copy Control

C++ Primer: Chapter 13 Copy Control

cjlcjlyoo的博客 381

如何高效使用Cpp-Primer:提升C++编程能力的5个学习方法

Cpp-Primer是学习C++编程的经典资源,通过合理利用其提供的丰富示例和练习,能有效提升C++编程能力。本文将分享5个实用学习方法,帮助你充分发挥Cpp-Primer的价值,快速掌握C++核心知识与编程技巧。 ## 1. 按章节系统学习,夯实基础概念 Cpp-Primer的章节编排循序渐进,建议从基础章节开始系统学习。每个章节都围绕特定主题展开,例如ch01介绍C++基本语法,ch02讲

gitblog_01189的博客 963

C++Primer中文版第五版答案全集

本文章会持续更新c++primer第五版中的所有答案,如果文章中内容有错误或者不合适的地方,欢迎各位读者留言不吝赐教!

qq130106486的博客 1万+

C++ Primer学习练习—— 第二章 变量和基本类型

变量和基本类型

weixin_43488529的博客 879

【C++ Primer 练习题】第1章 开始

C++程序的编译与运行输入与输出(std::cin和std::cout注释(//和/* */控制语句,包括while循环、for循环和if语句类简单使用,包括对象声明、类的成员函数调用以及类的+ - * / =操作(前提是需要在类定义时重载这些运算符)

shao_zi_kang的博客 774

C++ Primer(第五版) 第二章练习答案

C++ Primer(第五版) 第二章练习答案 目录C++ Primer(第五版) 第二章练习答案2.12.22.3or2.42.52.62.72.82.92.102.112.122.132.142.152.162.172.182.192.202.212.222.232.242.252.262.272.282.292.302.312.322.33or342.352.362.372.382.392.402.41or42 2.1 /** * 位不一样 * 有无负数 * 精度不一样 */ 2.2

LGDNSX 931

C++ primer 第四章习题

chapter4 表达式 文章目录chapter4 表达式练习4.1.2节练习练习4.1练习4.24.1.3节练习练习4.34.2节练习练习4.4练习4.5练习4.6练习4.74.3节练习练习4.8练习4.9练习4.10练习4.11练习4.124.4节练习练习4.13练习4.14练习4.15练习4.164.5节练习练习4.17练习4.18练习4.194.6节练习练习4.204.7节练习练习4.21...

hwl19951007的博客 1787

c++ Primer 第二章:变量和基本练习 练习答案记录

c++ Primer 第二章:变量和基本练习 练习答案记录

Is_Superman的博客 701

C++ Primer 第五版 第十三章 练习题编程题目答案

https://github.com/jzplp/Cpp-Primer-Answer 练习13.1 拷贝构造函数是类进行拷贝初始化时使用的构造函数。 练习13.2 对于该构造函数的调用会造成无限循环。 练习13.3 拷贝一个StrBlob时,拷贝了智能指针 拷贝一个StrBlobPtr时,拷贝了智能指针和size_t类型 练习13.4 这个函数被调用时 local初始化时 new一个指针时 答案书中没有写这条,这条可能会调用,也可能不会调用。但即使调用,

Coding home - 漂流瓶jz 1188
上一篇: (一)将7.1.1vtk配置到MFC工程中去
下一篇: c++ primer 13.26 指针行为的类
WJSZMD
博客等级 码龄10年 9粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值