首页 > 其他 > 详细

复现String类(持续更新)

时间:2021-01-13 21:12:52      阅读:25      评论:0      收藏:0      [点我收藏+]

2020/1/13

 

#ifndef __MYSTRING__
#define __MYSTRING__

#include <cstring>
#include <iostream>
using namespace std;

class mystring
{
public:
    mystring(const char * cstr = 0);
    mystring(const mystring& str); //拷贝构造
    mystring& operator = (const mystring& str);
    ~mystring();
    char * get_c_str() const { return m_data; }
    
private:
    char * m_data;
};

inline
mystring::mystring(const char * cstr)
{
    if (cstr) {
        m_data = new char[strlen(cstr) + 1];
        strcpy(m_data, cstr);
    }

    else {
        m_data = new char[1];
        *m_data = \0;
    }
}

inline
mystring::~mystring()
{
    delete[] m_data;
}

inline
mystring::mystring(const mystring& str)
{
    m_data = new char[strlen(str.m_data) + 1];
    strcpy(m_data, str.m_data);
}

inline mystring&
mystring::operator = (const mystring& str)
{
    if (this == &str) {
        return *this;
    }

    delete[] m_data;
    m_data = new char[strlen(str.m_data) + 1];
    strcpy(m_data, str.m_data);
    return *this;

}

ostream& operator<<(ostream& os, const mystring& str)
{
    os << str.get_c_str();
    return os;
}




#endif // !__MYSTRING__

 

复现String类(持续更新)

原文:https://www.cnblogs.com/xiangqi/p/14273971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!