#include <iostream>
#include <cstring>
using namespace std;
class Mystring
{
public:
Mystring(int n = 10)
{
str = new char [n];
size = n;
cout<<"Mystring init success"<<endl;
}
~Mystring()
{
delete [] str;
cout<<"Mystring delete success"<<endl;
}
Mystring operator+(Mystring &obj)
{
Mystring temp(this->size + obj.size);
strcpy(temp.str, this->str);
strcat(temp.str, obj.str);
return temp;
}
void operator=(const Mystring &obj)
{
if(this == &obj)
{
cout<<"this == obj"<<endl;
return;
}
if(this->size != obj.size)
{
delete [] this->str;
this->str = new char [obj.size];
this->size = obj.size;
}
memset(this->str, 0, this->size);
strcpy(this->str, obj.str);
}
void operator+=(Mystring &obj)
{
char buf[this->size] = {0};
strcpy(buf, this->str);
delete [] this->str;
this->str = new char [this->size + obj.size];
this->size = this->size + obj.size;
strcpy(this->str, buf);
strcat(this->str, obj.str);
}
bool operator==(Mystring &obj)
{
if(this->size != obj.size)
return false;
if(0 == strcmp(this->str, obj.str))
return true;
else
return false;
}
private:
char *str;
int size;
friend ostream & operator<<(ostream &, Mystring &);
friend istream & operator>>(istream &, Mystring &);
};
ostream & operator<<(ostream &os, Mystring &obj)
{
cout<<obj.str;
return os;
}
istream & operator>>(istream &is, Mystring &obj)
{
cin>>obj.str;
return is;
}
int main(void)
{
Mystring a,b,c;
cin>>a;
cin>>b;
c = (a+b);
a += b;
if(a == c)
cout<<"a == c"<<endl;
else
cout<<"a != c"<<endl;
cout<<a<<endl;
cout<<c<<endl;
return 0;
}
C++实现Mstring类,实现+,+=,==,=,cout输出,cin输入
最新推荐文章于 2024-09-10 08:28:20 发布