String类的实现

来源:互联网 发布:ae cc 2015 mac注册机 编辑:程序博客网 时间:2024/05/16 02:08

在笔试过程中,一直被问到一些STL源码的实现,趁着昨天刚写,今天把String类的实现整理出来,方便以后面试的时候用到。

class myString{public:myString(const char* data=NULL);myString(const myString& data);myString& operator = (myString & data);virtual ~myString();public:char* m_data;};myString::myString(const char* data ){if( data ){m_data = new char[strlen(data) + 1];strcpy(m_data, data);}else{m_data = new char[1];*m_data = '\0';}}myString::~myString(){delete[] m_data;}myString::myString(const myString& data){m_data = new char[strlen(data.m_data) + 1];if( !m_data )exit(1);strcpy( m_data, data.m_data );}myString& myString::operator=(myString& data){if( this == &data )return *this;else{delete[] m_data;m_data = new char[strlen(data.m_data) + 1];strcpy( m_data, data.m_data );return *this;}}

最核心的因素就是每一次对myString类进行操作的时候,都要考虑1、内存分配与否,2、操作符重载时还要考虑内存是否需要重新分配(delete加new)。

0 0
原创粉丝点击