zoukankan      html  css  js  c++  java
  • MyString

    #include <iostream>
    #include <vector>
    
    class MyString
    {
    private:
        char* m_data;
        size_t m_len;
        void copy_data(const char* s)
        {
            m_data = new char[m_len + 1];
            memcpy(m_data, s, m_len);
            m_data[m_len] = '';
        }
    
    public:
        MyString()
        {
            m_data = NULL;
            m_len = 0;
        }
    
        MyString(const char* p)
        {
            m_len = strlen(p);
            copy_data(p);
        }
    
        MyString(const MyString& str)
        {
            m_len = str.m_len;
            copy_data(str.m_data);
            std::cout << "Copy Constructor is called! source:" << str.m_data << std::endl;
        }
    
        MyString& operator=(const MyString& str)
        {
            if (this != &str)
            {
                m_len = str.m_len;
                copy_data(str.m_data);
            }
            std::cout << "Copy Assignment is called! source:" << str.m_data << std::endl;
            return *this;
        }
    
        MyString(MyString&& str)
        {
            std::cout << "Move Constructor is called! source:" << str.m_data << std::endl;
            m_len = str.m_len;
            m_data = str.m_data;
            str.m_len = 0;
            str.m_data = NULL;
        }
    
        MyString& operator=(MyString&& str)
        {
            std::cout << "Move Assignment is called! source:" << str.m_data << std::endl;
    
            if (this != &str)
            {
                m_len = str.m_len;
                m_data = str.m_data;
                str.m_len = 0;
                str.m_data = NULL;
            }
            
            return *this;
        }
    
        virtual ~MyString()
        {
            if (m_data != NULL)
            {
                delete[] m_data;
            }
        }
    };
    
    int main(void)
    {
        MyString a;
        a = MyString("Hello");
    
        std::vector<MyString> vec;
        vec.push_back(MyString("World"));
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    倒计时模块(获取的是服务器上的时间——适合购物网站的抢购模块)
    javascript 双色球选号器
    最短AJAX创建代码
    poj2387 Til the Cows Come Home
    POJ2236 Wireless Network
    HDU2102 A计划
    HDU2028 Lowest Common Multiple Plus
    HDU2612 Find a way
    HDU1495 非常可乐
    UVa10603 Fill
  • 原文地址:https://www.cnblogs.com/osbreak/p/11094084.html
Copyright © 2011-2022 走看看