解决上一篇浅拷贝的问题
浅拷贝的问题根源是,类里有指针类型的成员变量,所以需要自己编写拷贝构造函数和重载=函数
#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] = \'\';
}
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 atomic
-
新规上线,为你盘点百元产品薅羊毛大法
2026-05-18栏目: 教程
-
豆瓣评分9.1,这本计算机经典名著,我读到凌晨三点
2026-05-18栏目: 教程
-
Fun 3.0 发布——资源部署、依赖下载、代码编译等功能又又又增强啦!
2026-05-18栏目: 教程
-
IoT生态精刊2019云栖特刊来了【下载】
2026-05-18栏目: 教程
-
自从来了阿里云做视频研发,我的生活发生了翻天覆地的变化
2026-05-18栏目: 教程
