http://www.cnblogs.com/Braveliu/archive/2013/01/01/2841601.html
#ifndef __M_STRING__HPP
#define __M_STRING__HPP
#include <iostream>
#include <string.h>
class m_string
{
public:
m_string(const char* str);
m_string(const m_string& other);
~m_string();
private:
char* m_data;
};
#endif
#include "m_string.hpp"
#include <assert.h>
char *m_strcpy(char* strDest,const char * strSrc)
{
assert((strDest != NULL) && (strSrc != NULL));
if (strDest == strSrc)
{
return strDest;
}
char* address = srcDest;
while(*srcDest++ = *strSrc++);
return address;
}
m_string::m_string(const char* str)
{
if (NULL == str)
{
m_data = new char[1];
assert(m_data != NULL);
*m_data = '\0';
}else{
int length = strlen(str);
m_data = new char[length + 1];
assert(m_data != NULL);
m_strcpy(m_data,str);
}
}
/*
m_string::m_string(const m_string& other)
{
m_data = other.data;//
}*/
m_string::m_string(const m_string& other)
{
int length = strlen(other.m_data);
m_data = new char [length +1];
assert(m_data != NULL);
m_strcpy(m_data,other.m_data);
}
m_string::~m_string()
{
}
int main(int argc, char const *argv[])
{
return 0;
}