zoukankan      html  css  js  c++  java
  • *** C++ String类的构造、析构和赋值函数

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class String
    {
    public:
        String(const char * str=NULL)
        {
            if (str == NULL)
            {
                //这两行代码保证了:
                //任一String对象的m_string都不会是NULL,它指向heap上分配给它的空间
                m_string = new char[1];
                m_string = '';
            }
            else
            {
                m_string = new char[strlen(str)+1];
                strcpy (m_string, str);
            }
        }
    
        String(const String & s)
        {
            m_string = new char[strlen(s.m_string)+1];
            strcpy (m_string, s.m_string);
        }
    
        ~String()
        {
            if (m_string != NULL)
            {
                delete [] m_string;
                m_string = NULL;
            }
    
            cout << "destructor: m_string is " << ((m_string)?(m_string):("NULL")) << endl;
        }
    
        String & operator=(const String & s)
        {
            if (&s != this) //注意:判断是否同一对象,要对对象的地址比较
            {
                delete [] m_string;
                m_string = new char[strlen(s.m_string)+1];
                strcpy (m_string, s.m_string);
            }
    
            return *this;
        }
    
        char * str(void)
        {
            return m_string;
        }
    
    private:
        char * m_string;
    };
    
    int main()
    {
        String * a = new String("Becky");
        String * b = new String(NULL);
        String c;
    
        c= *b = *a;
        cout << "b = " << b->str() <<endl;
        cout << "c = " << c.str() << endl;
    
    
        delete a;
        delete b;
    
        return 0;
    
    }
  • 相关阅读:
    【排序】紧急集合
    Tallest Cow(线段树较易)
    递归实现排列型枚举
    文件输入输出文件
    【分治】逃亡
    折半查找法(二分)
    递归/非递归实现组合型枚举(全排列问题)
    9.25DAY1T2
    9.25DAY1T1
    POI2004[MOS] 贪心+DP
  • 原文地址:https://www.cnblogs.com/superrunner/p/10093702.html
Copyright © 2011-2022 走看看