Sting类的实现

为什么要进行操作符重载?

举个例子,正常的数字才可以进行加,如果对string进行+,实际上进行的是拼接的操作。那么这个时候,就需要对+进行操作符重载, 实现拼接的操作。‘


为什么赋值操作符(=)重载需要返回引用?
因为返回的是自己,而不是自己的一个拷贝。


什么是this指针?
this指针表示的类对象本身。它只作用在非静态成员函数中,作为一个隐藏参数。所以它的生命周期和正常的形参一样,在成员函数开始前构造,在结束时消除。


#include <iostream>
using namespace std;

class Mystring
{
	public:
		Mystring(const char*str = NULL);  //普通构造函数
		~Mystring();//析构函数
		Mystring(const Mystring&str);//拷贝构造函数		
		Mystring& operator=(const Mystring&str); //赋值函数
		Mystring operator+(const Mystring &str); //字符串连接
	private:
		char* m_data;
};

Mystring::Mystring(const char* str)
{
	if(str==NULL)
	{
		m_data = new char[1];
		m_data[0] = '\0';
	}else
	{
		m_data = new char[strlen(str)+1];
		strcpy(m_data,str);
	}

};

Mystring::~Mystring()
{
	delete []m_data;
};

Mystring::Mystring(const Mystring &str)
{
	m_data = new char[strlen(str.m_data)+1];
	strcpy(m_data,str.m_data);
};

Mystring& Mystring::operator=(const Mystring&str)
{
	if(m_data == str.m_data)
		return *this;
	delete [] m_data;
	m_data = new char[strlen(str.m_data)+1];
	strcpy(m_data,str.m_data);
	return *this;
};

Mystring Mystring::operator+(const Mystring&str)
{
	Mystring res;
	delete [] res.m_data;
	res.m_data = new char[strlen(m_data)+strlen(str.m_data)+1];
	res.m_data = strcpy(res.m_data,m_data);
	res.m_data = strcpy(res.m_data + strlen(m_data),str.m_data);
	return res;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值