# define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class string {
public:
//构造函数
string(const char* str = " ") {
if (str == nullptr) {
_str = new char[1];
_str[0] = '\0';
}
else
{
_str = new char[strlen(str)];
strcpy(_str, str);
}
}
//拷贝构造函数,使用深拷贝
string(const string& s)
{
_str = new char[strlen(s._str) + 1];
strcpy(s._str, _str);
}
string& operator=(const string& s) {
if (this != &s) {
delete _str[ ];
_str = new char[strlen(s._str) + 1];
strcpy(_str, s._str);
}
return *this;
}
//析构函数
~string()
{
delete _str;
}
// 提供一个成员函数来打印字符串,方便测试
const char* c_str() const {
return _str;
}
private:
char* _str;
};
# define _CRT_SECURE_NO_WARNINGS
int main() {
// 测试构造函数
string s1("Hello");
std::cout << "s1: " << s1.c_str() << std::endl;
// 测试拷贝构造函数
string s2(s1);
std::cout << "s2: " << s2.c_str() << std::endl;
// 测试赋值运算符重载
string s3;
s3 = s1;
std::cout << "s3: " << s3.c_str() << std::endl;
return 0;
}