c/c++ 深拷贝
程序员文章站
2022-05-23 19:43:02
解决上一篇 "浅拷贝" 的问题 浅拷贝的问题根源是,类里有指针类型的成员变量,所以需要自己编写拷贝构造函数和重载=函数 ......
解决上一篇的问题
浅拷贝的问题根源是,类里有指针类型的成员变量,所以需要自己编写拷贝构造函数和重载=函数
#include <iostream> #include <string.h> using namespace std; class string{ public: string(const char* str = ""){ if(null == str){ data = (char*)malloc(sizeof(char)); data[0] = '\0'; } else{ data = (char*)malloc(sizeof(char) * (strlen(str) + 1)); strcpy(data, str); } } string (const string &str){ data = (char*)malloc(sizeof(char) * (strlen(str.data) + 1)); strcpy(data, str.data); } string& operator= (const string &str){ if(this != &str){ char* tmp = data; data = (char*)malloc(sizeof(char) * (strlen(str.data) + 1)); if(null == data){ data = tmp; } else{ free(tmp); tmp = null; strcpy(data, str.data); } } return *this; } ~string(){ free(data); data = null; } char* getdata(){ return data; } private: char *data; }; int main(){ char* a = "abc"; string s(a); string s1(s); string s2; s2 = s1; return 0; }
上一篇: 中医教你判断月经是否正常
下一篇: 优雅的Java工具库Lombok