zoukankan      html  css  js  c++  java
  • String类练习

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class String
    {
    public:
        String(const char* str = NULL)
        {
            m_data = strcpy(new char[strlen(str?str:"")+1],str?str:"");
        }
        ~String()
        {
            if(m_data)
                delete[] m_data;
        }
        String(const String& that)
        {
            m_data=strcpy(new char[strlen(that.m_data)+1],that.m_data);
        }
    
        String& operator=(const String& that)
        {
            if(&that != this)
            {
                //初级
                //delete[] m_data;
                //m_data = strcpy(new char[strlen(that.m_data)+1],that.m_data);
    
                //中级
                //char* temp = new char[strlen(that.m_data)+1]);//如果分配失败,会抛出异常,不会执行下面代码
                //delete[] m_data;
                //m_data = strcpy(temp,that.m_data);
    
                //高级
                String str(that);
                swap(m_data,str.m_data); //实现代码复用
            }
            return *this;
        }
    
        char* c_str() const
        {
            return m_data;
        }
    private:
        char* m_data;
    };
    
    int main()
    {
        String s1("Hello Word");
        cout << s1.c_str() << endl;
        String s2(s1);
        cout << s2.c_str() << endl;
        return 0;
    
    }
  • 相关阅读:
    C语言 弹跳小球
    selenium 相关操作
    aiohttp 多任务异步协程
    39 数据库索引
    36 数据库 库表行增删改查 枚举 集合
    07 线程池回调函数
    06 gevent版真正的协程
    05 greenlet版协程
    03 线程池
    04 生成器版协程
  • 原文地址:https://www.cnblogs.com/SamRichard/p/3493598.html
Copyright © 2011-2022 走看看