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

C++day4

1、仿照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){cout<<"拷贝构造函数"<<endl;}//析构函数~myString(){delete str;cout<<"myString::析构函数:"<<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<<"myString::拷贝赋值函数"<<endl;return *this;}//判空函数bool my_empty(){if(0 == get_size()){return true;}return false;}//size函数int get_size(){size=0;while(*str != 0){str++;size++;}return size;}//c_str函数char *c_str(){return this->str;}//at函数char &at(int pos){if(pos >= 0 && pos< size){return this->str[pos];}else{cout<<"数组越界"<<endl;}}//加号运算符重载const myString operator+ (const myString &R)const{myString c;c.str=strcat(this->str, R.str);return c;}//加等于运算符重载myString operator+= (const myString &R){//this->str = new char[this->size+R.size+1];strcat(this->str,R.str);this->size+=R.size;return *this;}//关系运算符重载(>)bool operator> (const myString &R)const{if(strcmp(this->str,R.str) > 0){return true;}elsereturn false;}//中括号运算符重载char & operator[](int i){if(i >= 0 && i< size){return this->str[i];}else{cout<<"数组越界"<<endl;}}void display(){cout<<this->str<<endl;}
};
int main()
{myString ptr("hello");myString ptr2("world");myString ptr3 = ptr+ptr2;ptr3.display();cout<<ptr.at(1)<<endl;cout<<ptr[1]<<endl;ptr+=ptr2;ptr.display();return 0;
}

 

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

相关文章:

  • 【LeetCode-简单题】541. 反转字符串 II
  • Linux服务使用宝塔面板搭建网站,并发布公网访问
  • 代码随想录算法训练营19期第48天
  • 【校招VIP】产品项目分析之竞品分析
  • 【JavaScript内置对象】Date对象,从零开始
  • idea启动缓慢解决办法
  • App测试中ios和Android有哪些区别呢?
  • Flink JobManager的高可用配置
  • 为什么Token手动添加到请求的Header中,通常使用“Authorization“字段?
  • 国际生态数据获取网络
  • 爬虫逆向实战(34)-某视综数据(MD5、AES)
  • 数据分析三剑客之Matplotlib
  • Python Opencv实践 - LBP特征提取
  • Docker 搭建Redis Cluster 集群
  • 解决谷歌浏览器会http网站自动变成https的问题
  • go小知识2
  • zabbix监控H3C设备
  • 国产化改造之Mysql迁移方案:Mysql Galera Cluster
  • bootstrap表单类型
  • 第一章 SQL Server 数据库部署
  • 赛事个人团体报名分组成绩查询证书h5小程序开源版开发
  • 【大数据环境配置】01-安装VMware虚拟机
  • 什么是C语言中的命名空间?
  • Java语言特点 8种基本数据类型 标识符等练习题 插入/希尔/选择/堆/冒泡/快速/归并/计数排序
  • 建站系列(七)--- 常用前后端框架
  • Jmx协议远程连接java服务器
  • consul 概念 键值对操作命令
  • R拒绝访问的解决方案
  • SeaArt.ai: 海艺AI绘画艺术图片模型创作平台
  • 服务器数据恢复-Xen server虚拟机数据恢复案例