一、接口設計
//防衛式定義
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;
}