c++day4

 仿照string类,完成myString 类

#include <iostream>
#include<cstring>using namespace std;
class myString
{private:char *str;          //记录c风格的字符串int size;            //记录字符串的实际长度public://无参构造myString():size(10){str = new char[size];         //构造出一个长度为10的字符串strcpy(str,"");         //赋值为空串}//有参构造myString(const char *s)          //string  s("hello world"){size = strlen(s);str = new char[size+1];strcpy(str, s);}//拷贝构造myString(const myString &other):str(new char(*(other.str))),size(other.size){strcpy(this->str,other.str);this->size=other.size;cout<<"拷贝构造函数"<<endl;}//析构函数~myString(){delete str;cout<<"析构函数:"<<this<<endl;}//拷贝赋值函数myString & operator=(const myString &other){if(this != &other)          //确定不是自己给自己赋值{this->size = other.size;//判断原来指针空间释放被清空if(this->str != NULL){delete this->str;}this->str = new char(*other.str);}cout<<"拷贝赋值函数"<<endl;return  *this;             //返回自身引用}//判空函数bool empty(){return 0==size;}//size函数int mystring_size(){return strlen(str);}//c_str函数char *c_str(){return this->str;}//at函数char &at(int pos){return str[pos-1];}//加号运算符重载const myString operator+(const myString &R){myString c;// 计算合并后的字符串长度c.size=this->size+R.size;// 复制第一个字符串到结果字符串memcpy(c.str,this->str,this->size);// 复制第二个字符串到结果字符串memcpy(c.str+this->size,R.str,R.size+1);return c;}//加等于运算符重载myString & operator+=(const myString &R){// 复制第二个字符串到第一个字符串后memcpy(this->str+this->size,R.str,R.size+1);// 计算合并后的字符串长度this->size=this->size+R.size;return *this;}//关系运算符重载(>)bool operator>(const myString &R)const{return strcmp(this->str,R.str)>0;}//中括号运算符重载char & operator[](int index){return this->str[index];}
};int main()
{myString s1("hello");//判空函数if(s1.empty()){cout<<"函数为空"<<endl;}else{cout<<"函数不为空"<<endl;}//打印s1的长度cout<<"size="<<s1.mystring_size()<<endl;//打印s1字符串内容cout<<"s1="<<s1.c_str()<<endl;//调用&at函数,打印s1[1]的内容cout<<"s1[1]="<<s1.at(2)<<endl;myString s2("world");//打印s2字符串内容cout<<"s2="<<s2.c_str()<<endl;//调用+=运算符重载函数s2+=s1;//打印更新之后s2的字符串内容cout<<"s2="<<s2.c_str()<<endl;//调用+号运算符重载myString s3=s1+s2;//打印s3字符串内容cout<<"s3="<<s3.c_str()<<endl;//调用[]运算符重载cout<<"s3[5]="<<s3[6]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql技术文档--之与redo log(重做日志)庖丁解析-超级探索!!!

阿丹&#xff1a; 在刚开始写本文章的是还不太清楚要如何去细啃下这两个体系&#xff0c;在查阅资料的过程中。发现大厂阿里的庖丁解InnoDB系列&#xff0c;详细了的写了很多底层知识&#xff0c;于是基于这个这两个文章才有了阿丹的这篇文章。 整体认知&#xff1a; 在 MySQ…

nVisual光纤资源管理软件,亮相第24届光博会

第24届中国国际光电博览会&#xff08;CIOE&#xff09;于9月6日至8日在深圳国际会展中心盛大开幕。作为行业领先的网络基础设施管理软件供应商&#xff0c;耐威迪携nVisual光纤资源管理软件亮相9号馆C001、C002展位&#xff0c;全方位展示室外网络基础设施管理、光纤资源管理、…

2022年全国研究生数学建模竞赛华为杯E题草原放牧策略研究求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 E题 草原放牧策略研究 原题再现&#xff1a; 一、背景介绍   草原作为世界上分布最广的重要的陆地植被类型之一&#xff0c;分布面积广泛。中国的草原面积为3.55亿公顷&#xff0c;是世界草原总面积的6%~8%&#xff0c;居世界第二。此外…

CSP-J初赛复习大题整理笔记

本篇全是整理&#xff0c;为比赛准备. 在这里插入代码片 #include<cstdio> using namespace std; int n, m; int a[100], b[100];int main() {scanf_s("%d%d", &n, &m);for (int i 1; i < n; i)a[i] b[i] 0;//将两个数组清0&#xff0c;这…

MySQL与ES数据同步的四种方案及实践演示

文章目录 一、同步双写优点缺点双写失败风险项目演示 二、异步双写&#xff08;MQ方式&#xff09;优点缺点项目演示 三、基于Datax同步核心组件架构图支持的数据源及操作项目演示 四、基于Binlog实时同步实现原理优点缺点项目演示 一、同步双写 也就是同步调用&#xff0c;这…

切分支解决切不走因为未合并的路径如何解决

改代码的时候改做分支了&#xff0c;本来是在另一个分支上面改代码&#xff0c;结果改到另一个放置上面&#xff0c;然后想着使用git stash进行保存&#xff0c;然后切到另外一个分支再pop&#xff0c;结果不行。 报这个错误&#xff0c;导致切不过去&#xff0c;因为我这边pop…

TCP的滑动窗口与拥塞控制

客户端每发送的一个包&#xff0c;服务器端都应该有个回复&#xff0c;如果服务器端超过一定的时间没有回复&#xff0c;客户端就会重新发送这个包&#xff0c;直到有回复。 为了保证顺序性&#xff0c;每一个包都有一个 ID。在建立连接的时候&#xff0c;会商定起始的 ID 是什…

3D虚拟数字人定制,推动传统文化传播新高度

“数字人”成为“汉语盘点2022”年度十大新词语。伴随着科技发展成长的年轻人逐渐成为消费主力军&#xff0c;如何在虚拟世界与年轻一代用户互动以抓住95后年轻人受众&#xff0c;成为不少传统文化品牌发力的重点。 数字人“天妤”&#xff0c;在3D虚拟数字人定制中&#xff0…

免费的代码审查工具你知道这几个就够了?新手程序员必读

代码质量关系到一个项目的好坏&#xff0c;一直以来都是程序员和项目经理所关心的事情&#xff0c;在之前代码的检查用于人工或者静态页面&#xff0c;再后来就会用的各种工具来做因为不良的代码不仅会影响代码的可维护性&#xff0c;而且还会在某些情况下影响其性能。此外&…

已解决selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain: Cookie ‘

已解决selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain: Cookie ‘domain’ mismatch 文章目录 报错问题报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群里面的一个小伙伴遇到问题跑来私信我&#…

从构建者到设计者的低代码之路

低代码开发技术&#xff0c;是指无需编码或通过少量代码就可以快速生成应用程序的工具&#xff0c;一方面可降低企业应用开发人力成本和对专业软件人才的需求&#xff0c;另一方面可将原有数月甚至数年的开发时间成倍缩短&#xff0c;帮助企业实现降本增效、灵活迭代。那么&…

【80天学习完《深入理解计算机系统》】第十五天 4.1 Y86-64指令集与Verilog HDL

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔   如果大家觉得有帮助的话,感谢大家帮忙 点…

rsync远程同步+inotify监控

目录 一、Rsync 简介 1、rsync是什么 2、备份的方式 3、rsync同步方式 4、常用rsync命令 5、配置源的两种表达方法 二、rsync实验 1、本地复制 ​编辑​编辑 2、异地复制 2.1 rsync服务器配置 2.2 rsync客户端配置 2.2.1 普通同步 2.2.2 免密同步 2.2.3 --delet…

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…

使用 System.exit() 来优雅地终止 Spring Boot 项目

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 使用 System.exit() 来优雅地终止 Spring Boot 项目 ⏱️ 创作时间&am…

IIS解析漏洞复现

文章目录 漏洞复现总结 漏洞复现 打开虚拟机&#xff0c;在C:\inetpub\wwwroot\8000_test目录下放一个phpinfo.php文件&#xff1a; 在服务器管理器中打开IIS管理器&#xff0c;选择处理映射程序&#xff1a; 点击添加模块映射&#xff1a; 配置映射模板&#xff0c;php文件…

【猿灰灰赠书活动 - 06期】- 【计算机考研书单——408专属】

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;博文为大家争取福利&#xff0c;与机械工业出版社合作进行送书活动 &#x1f468;‍&#x1f…

​消费盲返模式:一种让消费者和商家都受益的新型消费返利模式

您是否想过&#xff0c;如果您的消费能够带来意想不到的回报&#xff0c;您会不会更愿意购买商品或服务呢&#xff1f;您是否想过&#xff0c;如果您的商品或服务能够吸引更多的消费者&#xff0c;并让他们成为您的忠实客户&#xff0c;您会不会更有动力经营您的业务呢&#xf…

一百七十四、Hive——Hive动态分区表加载数据时需不需要指定分区名?

一、目的 在Hive的DWD层和DWS层建立动态分区表后&#xff0c;发现动态插入数据时可以指定分区名&#xff0c;也可以不指定分区名。因此&#xff0c;研究一下它们的区别以及使用场景&#xff0c;从而决定在项目的海豚调度HiveSQL的脚本里需不需要指定动态分区的分区名&#xff…

【数据结构】长篇详解堆,堆的向上/向下调整算法,堆排序及TopK问题

文章目录 堆的概念性质图解 向上调整算法算法分析代码整体实现 向下调整算法算法分析整体代码实现 堆的接口实现初始化堆销毁堆插入元素删除元素打印元素判断是否为空取首元素实现堆 堆排序创建堆调整堆整合步骤 TopK问题 堆的概念 堆就是将一组数据所有元素按完全二叉树的顺序…