- #include
- #include
- using namespace std;
- class myString
- {
- private:
- char *str;
- int size;
- public:
- //无参构造
- myString():size(10)
- {
- str = new char[size]; //构造出一个长度为10的字符串
- strcpy(str,""); //赋值为空串
- }
- //有参构造
- myString(const char *s)
- {
- size = strlen(s);
- str = new char[size+1];
- strcpy(str,s);
- }
-
- //拷贝构造
- myString(const myString &other):size(other.size)
- {
- str = new char [size];
- strcpy(this->str,other.str);
- cout<<"拷贝构造函数"<
- }
-
- //析构函数
- ~myString()
- {
- delete[] this->str;
- cout<<"析构函数"<
- }
- //拷贝赋值函数
- myString &operator = (const myString &other)
- {
- size = other.size;
- strcpy(str,other.str);
- cout<<"拷贝赋值函数"<
- return *this;
-
- }
-
- //判空函数
- bool str_empty(const char *str) const
- {
- if(str ==NULL||*str=='\0')
- {
-
- return true;
- }
- else
- return false;
- }
- //size函数
- int str_size(const char *str)const
- {
- return sizeof(str);
- }
- //c_str函数
- const char *c_str() const
- {
- return str;
- }
- //at函数
- char &at(int pos)
- {
-
-
- return str[pos];
-
- }
- //成员函数版实现加号运算符重载
- myString operator+(const myString &R)const
- {
- myString new_string = *this;
- delete[] new_string.str;
- int len =strlen(this->str)+strlen(R.str)+1;
- new_string.str = new char[len];
- strcpy(new_string.str,this->str);
- strcat(new_string.str,R.str);
- return new_string;
- }
- //成员函数版实现加等于运算符重载
- myString &operator+=(const myString &R)
- {
- int len = strlen(str)+strlen(R.str)+1;
- char *s =this->str;
- str = nullptr;
- delete [] str;
- str = new char [len];
- strcpy(this->str,s);
- strcat(this->str,R.str);
- return *this;
- }
-
- //关系运算符重载
- bool operator>(const myString &R)const
- {
- //先求出长度
- int len1 = strlen(this->str);
- int len2 = strlen(R.str);
- int minlen =(len1
- for(int i=0;i
- {
- if(this->str[i]>R.str[i])
- {
- return true;
- }
- else if(this->str[i]
- {
- return false;
- }
- }
- return len1>len2;
- }
-
- //成员函数版实现中括号运算符重载
- char & operator[](int index)
- {
- if(index>=0&&index
- {
- return str[index];
- }
- }
- //展示函数
- void show()
- {
- cout<<"str = "<
" size = "< - }
- };
- int main()
- {
- myString s1("hello");
- s1[0]='H';
- s1.show();
- myString s2("world");
- s2.show();
- myString s6 =s1;
- s6.show();
- myString s3;
- s3 = s1 + s2;
- cout<
c_str()< - myString s4("hahaha");
- s4+=s1;
- cout<
c_str()< - if(s3>s2)
- {
- cout<<"yes"<
- }
- else
- cout<<"no"<
- myString s5("daydayup");
- s5.show();
- return 0;
- }
效果图
-
相关阅读:
c++异网高效发送数据
软件测试项目实战,Web测试常用测试点,即拿即用宝典
2022年面试,整理全网初、中、高级常见 Java 面试题
Echarts 实现X轴多维效果
【linux网络编程】一个bug
gdb监视
为了 GitHub 问题票,开发者做了一套小票打印机解决方案
人与人之间的单机五子棋 —— C语言实现
智能壁炉:火焰的数字革命
力扣leetcode 1608. 特殊数组的特征值
-
原文地址:https://blog.csdn.net/cscssacd/article/details/133616978