#include <iostream>
#include <cstring>
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<<"拷贝构造函数"<<endl;}//析构函数~myString(){delete[] this->str;cout<<"析构函数"<<endl;}//拷贝赋值函数myString &operator = (const myString &other){size = other.size;strcpy(str,other.str);cout<<"拷贝赋值函数"<<endl;return *this;}//判空函数bool str_empty(const char *str) const{if(str ==NULL||*str=='\0'){return true;}elsereturn 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<len2?len1:len2);for(int i=0;i<minlen;i++){if(this->str[i]>R.str[i]){return true;}else if(this->str[i]<R.str[i]){return false;}}return len1>len2;}//成员函数版实现中括号运算符重载char & operator[](int index){if(index>=0&&index<size){return str[index];}}//展示函数void show(){cout<<"str = "<<str<<" size = "<<size<<endl;}
};
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<<s3.c_str()<<endl;myString s4("hahaha");s4+=s1;cout<<s4.c_str()<<endl;if(s3>s2){cout<<"yes"<<endl;}elsecout<<"no"<<endl;myString s5("daydayup");s5.show();return 0;
}
效果图