码迷,mamicode.com
首页 > 其他好文 > 详细

String类的实现

时间:2014-10-15 15:00:20      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:string实现   stl源码   

在笔试过程中,一直被问到一些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)。

String类的实现

标签:string实现   stl源码   

原文地址:http://blog.csdn.net/cout_sev/article/details/40108933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!