String类简单实现

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;
} 

猜你喜欢

转载自blog.csdn.net/qq_33436509/article/details/82286845