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