my_string 包括构造函数,拷贝构造函数,析构函数,operator=,operator<<,operator ==,operator!=。
#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
public:
my_string();
my_string(const char* str);
my_string(const my_string& str);
~my_string();
my_string& operator =(const my_string& str);
bool operator ==(const my_string& str);
bool operator !=(const my_string& str);
friend ostream& operator <<(ostream& out,const my_string& obj);
private:
char *data;
};
bool my_string::operator ==(const my_string& str)
{
int ret=strcmp(data,str.data);
if(ret==0)
{
return true;
}
else
{
return false;
}
}
bool my_string::operator !=(const my_string& str)
{
int ret=strcmp(data,str.data);
if(ret!=0)
{
return true;
}
else
{
return false;
}
}
ostream& operator <<(ostream& out,const my_string& obj)
{
out<<obj.data<<endl;
return out;
}
my_string::my_string()
{
data=new char[1];
*data='\0';
}
my_string::my_string(const char* str)
{
if(str==NULL)
{
data=new char[1];
*data='\0';
}
else
{
int length=strlen(str);
data=new char[length+1];
strcpy(data,str);
}
}
my_string::my_string(const my_string& str)
{
int length=strlen(str.data);
data=new char[length+1];
strcpy(data,str.data);
}
my_string::~my_string()
{
delete [] data;
cout<<"my_string::~my_string()"<<endl;
}
my_string& my_string::operator =(const my_string& str)
{
if(this==&str)
{
return *this;
}
else
{
delete[] data;
int length=strlen(str.data);
data=new char[length+1];
strcpy(data,str.data);
return *this;
}
}
int main(void)
{
my_string t1;
my_string t2("11111");
t1=t2;
cout<<t1<<t2;
cout<<(t1!=t2)<<endl;;
return 0;
}