C/C++面试题:编写类String的构造函数、析构函数和赋值函数。

考点:构造函数、析构函数和赋值函数的编写方法
出现频率:☆☆☆☆☆
已知类String的原型为:
        class String
        {
        public:
                String(const char *str = NULL);     //普通构造函数
                String(const String &other);        //拷贝构造函数
                ~ String(void);                    //析构函数
                String & operator =(const String &other); //赋值函数
        private:
                char *m_String;                  //私有成员,保存字符串
        };
解析:
程序代码如下:

 #include <iostream>
        using namespace std;
        class String
        {
        public:
                String(const char *str = NULL);          //普通构造函数
                String(const String &other);             //拷贝构造函数
                ~ String(void);                         //析构函数
                String & operator =(const String &other);  //赋值函数
        private:
                char *m_String;    //私有成员,保存字符串
        };
        
        String::~String(void)             
        {
                cout << "Destructing"<< endl;
                if (m_String != NULL)                  //如果m_String不为NULL,释放堆内存
                {
                        delete [] m_String;
                        m_String = NULL;                //释放后置为NULL
                }
        }
        
        String::String(const char *str)      
        {
                cout << "Construcing" << endl; 
                if(str == NULL)                        //如果str为NULL,存空字符串""
                {
                        m_String = new char[1];            //分配一个字节
                        *m_String = '