C++实现Mstring类,实现+,+=,==,=,cout输出,cin输入

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值