復String類的實現

一、接口設計

//防衛式定義
class String
{
public:
	String(const char* cstr = 0);// 構造函數,上面寫的事默認值 初值
	String(const string& str);//拷貝構造
	String& operator = (const string& str);
	~String();//析構函數
	char* get_c_str() {return m_mata;}
private :
	char* m_mata;
}; 	

二、構造函數和析構函數的設計

inline
String::String(const char* cstr = 0)//構造函數
{
	if(cstr)//傳進來的指針是否有東西?
	{
		m_data= new char[strlen(cstr)+1];
		strcpy(m_data,cstr);
	}
	else //空的,沒有指定初值
	{
		m_data=new char[1];
		*m_data='\0';
	}
}
inline
String::~String()//析構函數
{
	delete[] m_data;
}

三、拷貝構造函數

inline
String& String::operator=(const String& str)
{
	if(this == &str)  //自我賦值
	{
		return *this;
	}
	delete[] m_data;
	m_data = new chat[strlen(str.m_mata)+1];
	strcpy(m_data,str.m_mata);
	return *this;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章