当前位置: 首页 > news >正文

华清远见第六课程day4作业

仿照string类,完成myString 类


#include <iostream>
#include <cstring>using namespace std;class myString{
private:char *str;int size;
public:myString():size(10){str = new char[size];strcpy(str,"");}myString(const char*s){size = strlen(s);str = new char[size+1];strcpy(str,s);}//拷贝构造myString(const myString &other):str(new char(*other.str)),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.size);strcpy(str,other.str);//如果指针空间大小一致  //*this->ptr = *other.ptr;}cout<<"Stu:: 拷贝赋值函数"<<endl;return  *this;             //返回自身引用}void show(){cout<<size<<endl;cout<<str<<endl;}//判空函数int empty(){return str[1]==0;}//size函数int getsize(){int i=0;while(*(str+i)){i++;}size = i;return i;}//c_str函数const char* c_str(){char *word=new char[size+1];for(int i=0;i<size;i++){word[i]=*(str+i);}return word;}//at函数char &at(int pos){if(pos<0||pos>size){cout<<"输入的位置有误请重新输入"<<endl;}return *(str+pos);}friend const myString operator +(const myString &L,const myString &R);//加等于运算符重载myString & operator += (const myString &R){strcat(this->str,R.str);this->size+=R.size;return *this;}//关系运算符重载(>)bool operator > (const myString &R)const{return strcmp( this->str,R.str);}//中括号运算符重载char & operator[](int index){return *(str+index);}
};
//加号运算符重载
const myString operator+(const myString &L,const myString &R){myString c;strcpy(c.str,L.str);strcat(c.str,R.str);c.size=R.size+L.size;return c;
}int main()
{myString str("114514");myString str1("1919810");myString str3=str+str1;myString str4;str4=str;str4+=str1;str4[6]='a';if(str>str1){cout<<"大"<<endl;}else{cout<<"小"<<endl;}str4.show();return 0;
}

http://www.lryc.cn/news/163590.html

相关文章:

  • 【广州华锐互动】AR远程智慧巡检在化工行业中的应用
  • easyui-sidemenu 菜单 后台加载
  • Python总结上传图片到服务器并保存的两种方式
  • 【ETH】以太坊合约智能合约逆向方案
  • C高级Day5
  • AI绘画:Midjourney超详细教程Al表情包超简单制作,内附关键词和变现方式
  • Linux dup dup2函数
  • 设计模式系列-外观模式
  • DBeaver 下载、安装与数据库连接(MySQL)详细教程【超详细,保姆级教程!!!】
  • 使用adjustText解决标签文字遮挡问题python
  • [论文笔记]SiameseNet
  • 只有个体户执照,可以用来在抖音开店吗?抖店开通问题解答
  • 微服务高可用容灾架构设计
  • 记录docker 部署nessus
  • qt 正则表达式
  • l8-d13 UNIX域套接字
  • @RequiredArgsConstructor(onConstructor=@_(@Autowired))是什么语法?
  • FL Studio Producer Edition 21.0.3.3713中文完整破解版功能特点及安装激活教程
  • Mybatis 动态语言 - mybatis-velocity
  • Fourier傅里叶变换的线性性质和位移性质
  • # 磁盘引导方式相关知识之BIOS、msdos、MBR、UEFI、gpt、esp、csm
  • Java中同时POST文件和提交JSON数据的方法
  • 【React】React获取URL参数,根据URL参数隐藏页面元素
  • 第68步 时间序列建模实战:ARIMA建模(Matlab)
  • Gin学习记录3——模版与渲染
  • Python算法练习 9.11
  • 2023年中秋节和国庆节放假几天?用待办软件记录放假安排并提醒
  • 使用Python实现一个完整的声音采样和模拟,使用采样声音播放输入的文字,实现代码进行详细注释,并进行测试
  • 测试----计算机网络
  • SVN 索引版本与打包版本号不匹配