三、试写出CString类的如下几个构造、析构、重载函数  
String::String(const  char  *str=NULL);  
String::String(const  String  &other);  
~String(void);  
String::String  &operate=(const  String  &other); 
分不多了,只能出20分,望谅解!

解决方案 »

  1.   

    // String 的析构函数
    String::~String(void){
    delete [] m_data;
    }
    String::String(const char *str)
    {
    if(str==NULL)
    {
    m_data = new char[1]; // 若能加 NULL 判断则更好
    *m_data = ‘\0’;
    }
    else
    {
    int length = strlen(str);
    m_data = new char[length+1]; // 若能加 NULL 判断则更好
    strcpy(m_data, str);
    }
    }
    // 拷贝构造函数
    String::String(const String &other)
    {
    int length = strlen(other.m_data);
    m_data = new char[length+1]; // 若能加 NULL 判断则更好
    strcpy(m_data, other.m_data);
    }
    // 赋值函数
    String & String::operate =(const String &other)
    {
    // (1) 检查自赋值
    if(this == &other)
    return *this;
    // (2) 释放原有的内存资源
    delete [] m_data;
    // (3)分配新的内存资源,并复制内容 
    int length = strlen(other.m_data);
    m_data = new char[length+1]; // 若能加 NULL 判断则更好
    strcpy(m_data, other.m_data);
    // (4)返回本对象的引用 
    return *this;
    }
      

  2.   

    《C++ Primer》上有嘛。何必这么辛苦到处问?
      

  3.   

    http://www.vcshare.net/download/c_cc.doc