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;
    
    }
  • 相关阅读:
    数据库使用动态监听导致EM起不来的解决方法
    OCP-1Z0-053-V12.02-115题
    OCP-1Z0-053-V12.02-150题
    OCP-1Z0-053-V12.02-136题
    OCP-1Z0-053-V12.02-154题
    OCP-1Z0-053-V12.02-149题
    OCP-1Z0-053-V12.02-146题
    OCP-1Z0-053-V12.02-160题
    OCP-1Z0-053-V12.02-157题
    OCP-1Z0-053-V12.02-164题
  • 原文地址:https://www.cnblogs.com/superrunner/p/10093702.html
Copyright © 2011-2022 走看看