仿照string类,完成myString类
- #include
- #include
- 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<<"拷贝构造函数"<
- }
- //析构函数
- ~myString()
- {
- delete str;//释放成员指针的空间
- cout<<"mySting::析构函数"<
- }
- //拷贝赋值函数
- 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::拷贝赋值函数"<
- }
- //判空函数
- bool my_empty()
- {
- if(0==my_size())
- {
- return true;
- }
- return false;
- }
- //size函数
- int my_size()
- {
- if(*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<<"数组越界"<
- }
- }
- //加号运算符重载
- const myString operator+ (const myString &R)const
- {
- myString c;
- c.str=strcat(this->str, R.str);
- return c;
- }
- //加等于运算符重载
- myString operator+=(const myString &other)
- {
- strcat(str,other.str);
- size+=other.size;
- return *this;
- }
- //关系运算符重载(>)
- bool operator> (const myString &R)const
- {
- if(strcmp(this->str,R.str) > 0)
- {
- return true;
- }
- else
- return false;
- }
- //中括号运算符重载
- char & operator[](int i)
- {
- if(i >= 0 && i< size)
- {
- return this->str[i];
- }
- else
- {
- cout<<"数组越界"<
- }
- }
- };
- int main()
- {
- myString mystr("hello");
- myString mystr1("world");
- myString mystr2=mystr+mystr1;
- cout<
at(1)< -
-
相关阅读:
铁道交通运输运营3D模拟仿真实操提供一个沉浸、高效且环保的情境
Python学习----异常、模块、安装第三方包
剑指Offer || :栈与队列(简单)
Android --- RecycleView
DiskPressure(磁盘压力)
Spark---数据输出
【C++】C/C++内存管理(new和delete详解)
操作系统_多线程笔记(二)
家用摄像头怎么选:实用性,功能性以及性价比是关键
2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智慧社区信息化服务平台4v5hv
-
原文地址:https://blog.csdn.net/m0_59031281/article/details/132817077