请问这个用c++应该怎么写

img


本人刚接触c++,听了对这些定义的讲解也一头雾水,请问谁能帮忙解释一下,能给个例子最后Thanks♪(・ω・)ノ



 
class String
{
 
public:
 
    String(const char* str = NULL);// 普通构造函数  
    String(const String& str);     // 拷贝构造函数  
    ~String(void);                 // 析构函数  
    String& operator = (const String& str);// 赋值函数  
 
private:
 
    char* m_data;// 用于保存字符串  
    int  length;
 
};
 
String::String(const char* str)
{
    if (NULL == str)
    {
        m_data    = new char[1];// 得分点:对空字符串自动申请存放结束标志'\0'的,加分点:对m_data加NULL判断  
        m_data[0] = '\0';
        length    = 0;
    }
    else
    {
        length = strlen(str);
        m_data = new char[length + 1];// 若能加 NULL 判断则更好
        memcpy(m_data, str, length);
        m_data[length] = '\0';
    }
}
 
 
String::String(const String& str)// 得分点:输入参数为const型  
{
 
    length = str.length;
    m_data = new char[length + 1];    // 若能加 NULL 判断则更好
    memcpy(m_data,str.m_data,length);
    m_data[length] = '\0';
}
 
// String的析构函数  
String::~String(void)
{
    length = 0;
    delete[] m_data;
}
 
//赋值函数 
String& String::operator = (const String& str) 得分点:输入参数为const型
{
    if (this == &str)              //得分点:检查自赋值 
        return *this;
   
    if(m_data)
    delete[] m_data;              //得分点:释放原有的内存资源
 
    length = str.length;
    m_data = new char[length + 1];//加分点:对m_data加NULL判断
    strcpy(m_data, str.m_data);
    m_data[length] = '\0';
 
    return *this;//得分点:返回本对象的引用    
}