void* memcpy1(void *dst,const void *src,int count){
assert(dst != NULL && src!= NULL && count>=0);
void *temp = dst;
char *pdst = (char*)dst;
char *psrc = (char*)src;
if(pdst>=psrc && pdst <= psrc+count-1)
{
pdst = pdst + count -1;
psrc = psrc + count -1;
while (count--)
*pdst-- = *psrc--;
}
else
{
while(count--)
*pdst++ = *psrc++;
}
return temp;
}
char* strcpy1(char *dst,const char *src){
assert(dst != NULL && src!= NULL);
char *temp = dst;
memcpy1(dst,src,strlen(src)+1);
return temp;
}class MyString{
public:
friend ostream& operator<<(ostream&,const MyString&);
MyString(const char *str = NULL){
if(NULL == str)
m_data = 0;
else
{
m_data = new char[strlen(str)+1];
strcpy(m_data,str);
}
}
MyString(const MyString & string)
{
if(string.m_data == 0 || string.m_data == NULL)
m_data = 0;
else
{
m_data = new char[strlen(string.m_data)+1];
strcpy(m_data,string.m_data);
}
}
MyString& operator=(const MyString &string){
if(this != &string)
{
char *temp = m_data;
if(string.m_data==0 || string.m_data == NULL)
m_data = 0;
else
{
m_data = new char[strlen(string.m_data)+1];
strcpy(m_data,string.m_data);
}
delete []temp;
}
return *this;
}
private:
char *m_data;
};原文:http://blog.csdn.net/h_wlyfw/article/details/39367799