#include "stdafx.h"
#include
#include
int strLen(char * pSrc)
{
if (nullptr == pSrc)
{
return 0;
}
int nLen = 0;
char * pTemp = pSrc;
while (*pTemp != '\0')
{
nLen++;
pTemp++;
}
return nLen;
}
char * strCopy(char * dest, const char * src)
{
if (dest == nullptr || src == nullptr)
{
return nullptr;
}
if (dest == src)
{
return dest;
}
char * tmp = dest;
while (*src != '\0')
{
*tmp++ = *src++;
}
return dest;
}
char * strCat(char * pDst, char * pSrc)
{
if (pDst == nullptr || pSrc == nullptr)
{
return nullptr;
}
char * pTemp = pDst + strLen(pDst);
while (*pSrc != '\0')
{
*pTemp++ = *pSrc++;
}
*pTemp = '\0';
return pDst;
}
class String
{
public:
String(char *pData = nullptr)
{
if (nullptr == pData)
{
m_pChar = new char[1];
assert(nullptr != m_pChar);
m_pChar = '\0';
}
else
{
m_pChar = new char[strLen(pData) + 1];
assert(nullptr != m_pChar);
memset(m_pChar, 0, strLen(m_pChar));
strCopy(m_pChar, pData);
}
}
~String()
{
if (nullptr != m_pChar)
{
delete[] m_pChar;
m_pChar = nullptr;
}
}
String(const String &Other)
{
m_pChar = new char[strLen(Other.m_pChar) + 1];
assert(nullptr != m_pChar);
memset(m_pChar, 0, strLen(m_pChar));
strCopy(m_pChar, Other.m_pChar);
}
const String& operator =(const String &Other)
{
if (this == &Other)
{
return *this;
}
delete[] m_pChar;
m_pChar = new char[strLen(Other.m_pChar) + 1];
assert(nullptr != m_pChar);
memset(m_pChar, 0, strLen(m_pChar));
strCopy(m_pChar, Other.m_pChar);
return *this;
}
private:
char * m_pChar;
};
int _tmain(int argc, _TCHAR* argv[])
{
String str = "123";
str = "456";
return 0;
}