string 类的简单实现

#include <iostream>
using namespace std;

class MyString{
private:
	char *str;
	int len;
public:
	MyString();
	MyString(const char *s);
	MyString(const MyString &);
	~MyString();
	int length(){return len;}
	MyString &operator =(const MyString &);
	MyString &operator =(const char *);
	friend ostream &operator <<(ostream &os,const MyString &st);
	friend istream &operator >>(istream &is,MyString &st);
};


头文件定义如上所示: 定义最基本的一些操作,构造函数、复制构造函数、析构函数、赋值操作等。

 

#include "MyString.h"
#include <string>
#include <iostream>
using namespace std;

MyString::MyString()
{
	len=1;
	str=new char[1];
	str[0]='\0';
}

MyString ::MyString(const char *s)
{
	len=strlen(s);
	str=new char[len+1];
	strcpy(str,s);
	cout<<"类C的构造函数被调用"<<endl;
}

MyString ::MyString(const MyString &s)
{
	len=s.len;
	str=new char[len+1];
	strcpy(str,s.str);
	cout<<"复制构造函数被调用"<<endl;
}

MyString::~MyString()
{
	delete []str;
	cout<<"析构函数被调用"<<endl;
}

MyString & MyString::operator=(const MyString &s )
{
	if (this==&s)
	{
		return *this;
	}
	delete []str;
	len=s.len;
	str=new char[len+1];
	strcpy(str,s.str);
	cout<<"赋值操作被调用"<<endl;
	return *this;
}

MyString & MyString::operator=(const char *s)
{
	delete []str;
	len=strlen(s);
	str=new char[len+1];
	strcpy(str,s);
	cout<<"类C的赋值操作被调用"<<endl;
	return *this;
}

ostream &operator <<(ostream &os,const MyString &st)
{
	os<<st.str;
	return os;
}


MyString 类的具体方法实现过程,注意其中内存操作部分是关键。

 

下面是操作这个类的测试代码

#include "MyString.h"

int main()
{
	MyString str="hello world";
	MyString str2="love you";
	MyString str1=str;
	str1=str2;
	str2="saisai";
	cout<<str<<endl;
	cout<<str1<<endl;
	cout<<str2<<endl;
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值