字符串类的创建

class String
{
public:
    String(char *pstr);//构造函数
    ~String();             //析构函数
    String(const String &src);//拷贝构造函数
    String& operator=(const String &src);//赋值函数
private:
    char *_pstr;
};
String::String (char *pstr)//普通构造函数
{
	if(pstr==NULL)
	{
		_pstr=new char[1];
		*_pstr='\0';
	}
	else
	{
		int len=strlen(pstr);
		_pstr=new char[len+1];
		int i=0;
	    for(;i<len;i++)
		{
		   _pstr[i]=pstr[i];
		}
	   _pstr[i]='\0';
	}
}
 String ::~String()//。析构函数
 {
    delete []_pstr;
 }
String::String(const String &src)//拷贝构造函数
 {
     int len=strlen(src._pstr);//深度拷贝
	 _pstr=new char[len+1];
	 int i=0;
	 for(;i<len;i++)
	 {
		_pstr[i]=src._pstr [i];
	 }
    _pstr[i]='\0';
 }
String& String:: operator=(const String &src)//赋值函数
 {
	 if(this==&src)//判断是否是自我赋值
	 {
	    return *this;
	 }
	 delete []_pstr ;//先释放对象已占的内存
	 int len=strlen(src._pstr );
	 char *ptmp=new char[len+1];//申请足够的内存空间
	 int i=0;
	 for(;i<len;i++)
	 {
		ptmp[i]=src._pstr [i];//数据的拷贝
	 }
	 _pstr=ptmp;
    return *this;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值