1.实现String类的头文件String.h
#ifndef STRING_H
#define STRING_H
#include <string.h>
class String
{
public:
String(const char *str=NULL);
String(const String &str);
~String();
String &operatot= (const String &str);
void ShowString();
private:
char *_pMy_Data;
}
2.实现String类的函数实现String.cpp
#include "String.h"
#include <assert.h>
String::String(const char *str)
{
if(NULL==str)
{
_pMy_Data=new char[1];
*_pMy_Data='\0';
}
else
{
int length=strlen(str);
_pMy_Data=new char[length+1];
strcpy(_pMy_Data,str);
}
}
String::~String()
{
delete[] _pMy_Data;
}
String::String(const String &strObj)
{
int length=strlen(strObj._pMy_Data);
_pMy_Data=new char[length+1];
strcpy(_pMy_Data,strObj._pMy_Data);
}
String &String::operator= (const String &strObj)
{
if(this==&strObj)
return *this;
delete [] _pMy_Data;
int length=strlen(strObj._pMy_Data);
_pMy_Data=new char[length+1];
strcpy(_pMyData,strObj._pMy_Data);
return *this;
}
#include <iostream>
void String::ShowString()
{
std::cout<<this->_pMy_Data<<std::endl;
}
3.主程序函数main.cpp
#include <stdio.h>
#include <stdlib.h>
#include "String.h"
int main()
{
String AD;
char *p="ASCD";
String B(p);
AD.ShowString();
AD=B;
AD.ShowString();
getchar ();
return 0;
}
4.输出
ASCD
5.实现自定义的myStrcpy()
char *myStrcpy(char *dest,const char *src)
{
assert( (dest!=NULL) && (src!=NULL) );
char *temp=dest;
while( ( *dest++ = *src++) !='\0')
{}
*dest='\0';
return temp;
}