博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++ 深拷贝
阅读量:4312 次
发布时间:2019-06-06

本文共 1047 字,大约阅读时间需要 3 分钟。

解决上一篇的问题

浅拷贝的问题根源是,类里有指针类型的成员变量,所以需要自己编写拷贝构造函数和重载=函数

#include 
#include
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;}

转载于:https://www.cnblogs.com/xiaoshiwang/p/9500321.html

你可能感兴趣的文章
WEB 小案例 -- 网上书城(一)
查看>>
加入博客园八个月了
查看>>
怎样实现前端裁剪上传图片功能
查看>>
python flask 如何修改默认端口号
查看>>
Map<String,Object> map=new HashMap<String,Object>详解
查看>>
实现tap的多种方式
查看>>
UVA - 10494 If We Were a Child Again
查看>>
html5 canvas 渲染像素混合模式
查看>>
【hexo】01安装
查看>>
CI框架源码学习笔记2——Common.php
查看>>
005---书籍添加和编辑的提交数据
查看>>
使用case语句给字体改变颜色
查看>>
JAVA基础-多线程
查看>>
面试题5:字符串替换空格
查看>>
JSP九大内置对象及四个作用域
查看>>
OCAC公告
查看>>
Modernizr.js介绍与使用
查看>>
ConnectionString 属性尚未初始化
查看>>
解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
查看>>
数据结构-栈 C和C++的实现
查看>>