一、接口设计
//防卫式定义
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;
}