如何规范地写一个C++的String类

代码:

#include 
using namespace std;

class String{
public:
    //默认构造函数
    String(const char *str = nullptr);
    //默认拷贝构造函数
    String(const String& str);
    ~String();
    String& operator=(const String& str);
private:
    char* m_data;
    int m_size;
};
//构造函数
String::String(const char *str) {
    if (str == nullptr){
        m_data = new char [1];
        m_data[0] ='\0';
        m_size = 0;
    }
    else{
        m_size = strlen(str);
        m_data = new char[m_size+1];
        strcpy(m_data,str);
    }
}
//拷贝构造函数
String::String(const String &str)
{
    m_size = str.m_size;
    m_data = new char[m_size+1];
    strcpy(m_data,str.m_data);
}
//析构函数
String::~String()
{
    delete[]m_data;
}
//字符串赋值函数
String& String::operator=(const String &str)
{
    if(this == &str){
        return *this;
    }
    delete [] m_data;
    m_size = strlen(str.m_data);
    m_data = new char [m_size+1];
    strcpy(m_data,str.m_data);
    return *this;
}

int main(){
    String s("hello");
    String s1 = s;
    String s2("world");
    s2 = s1;
}

你可能感兴趣的:(C++)