实现string类

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

class String {
    String(const char* str = NULL);
    ~String();
    String(const String& other);
    String& operator= (const String& other);
    String& operator= (const char* str);
    inline char* c_str() const {
        return m_data;
    }
private:
    char* m_data;
};

String::String(const char *str) {
    if(str == NULL) {
        m_data = new char[1];
        m_data[0] = '\0';
    }
    else{
        int len = strlen(str);
        m_data = new char[len+1];
        strcpy(m_data, str);
    }
}

String::~String() {
    delete[] m_data;
    m_data = NULL;
}

String::String(const String& other) {
    int len = strlen(other.m_data);
    m_data = new char[len+1];
    strcpy(m_data, other.m_data);
}

String& String:: operator= (const String& other) {
    if(this == &other)
        return *this;

    delete[] m_data;
    int len = strlen(other.m_data);
    m_data = new char[len+1];
    strcpy(m_data, other.m_data);
    return *this;
}

String& String::operator=(const char *str) {
    delete[] m_data;
    int len = strlen(str);
    m_data = new char[len+1];
    strcpy(m_data, str);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容