用C++实现string类
#include<iostream>
#include<cstring>
using namespace std;
class My_String {
public:
My_String(const char* str = nullptr);
My_String(const My_String& str);
My_String& operator=(const My_String& str);
~My_String();
friend ostream& operator<<(ostream& os, const My_String& s);
private:
char* m_data;
int m_size;
};
My_String::My_String(const char* str) {
if (str == nullptr) {
m_data = new char[1];
*m_data = '\0';
m_size = 0;
} else {
m_size = strlen(str);
m_data = new char[m_size + 1];
strcpy(m_data, str);
}
}
My_String::My_String(const My_String& str) {
m_size = str.m_size;
m_data = new char[m_size + 1];
strcpy(m_data, str.m_data);
}
My_String& My_String::operator=(const My_String& str) {
if (this == &str) {
return *this;
} else {
delete[] m_data;
m_size = str.m_size;
m_data = new char[m_size + 1];
strcpy(m_data, str.m_data);
return *this;
}
}
My_String::~My_String() {
delete[] m_data;
}
ostream& operator<<(ostream& os, const My_String& rhs) {
os << rhs.m_data;
return os;
}
int main() {
My_String str1("abc");
My_String str2(str1);
My_String str3("def");
My_String str4;
str4 = str3;
cout << str2 << endl;
cout << str3 << endl;
cout << str4 << endl;
return 0;
}
测试结果