c++实现字符串的深拷贝
来源:互联网 发布:并发编程研究内容 编辑:程序博客网 时间:2024/06/16 08:34
/* * 实现字符串的深拷贝 */#include <cstdio>#include <cstring>#include <iostream>using namespace std;class CString{ friend std::ostream& operator<<(std::ostream& os, const CString& str); public: CString(const char* p = nullptr); CString(const CString& str); CString& operator=(const CString& other); ~CString(); private: char* m_data;};CString::CString(const char* p){ std::cout << "CString(const char* p)" << std::endl; if (p == nullptr) { m_data = new char[1]; *m_data = '\0'; } else { int length = strlen(p); m_data = new char[length+1]; strcpy(m_data, p); }}CString::CString(const CString& str){ std::cout << "CString(const CString& str)" << std::endl; int length = strlen(str.m_data); m_data = new char[length+1]; strcpy(m_data, str.m_data);}CString& CString::operator=(const CString& other){ std::cout << "operator=(const CString& other)" << std::endl; if (this != &other) { CString temp(other); char *p = temp.m_data; temp.m_data = m_data; m_data = p; //temp离开作用域,自动释放内存 } return *this;}CString::~CString(){ if (m_data != nullptr) delete []m_data;}std::ostream& operator<<(std::ostream& os, const CString& str){ os << str.m_data; return os;}int main(){ const char* p = "hello world"; CString str(p); std::cout << "str: " << str << std::endl; //调用拷贝构造函数 CString a(str); std::cout << "a: " << a << std::endl; CString b; //调用赋值构造函数 b = a; std::cout << "b : " << b << std::endl; return 0;}
阅读全文
0 0
- 纯C实现字符串拷贝
- 实现字符串类型的深拷贝
- c++实现字符串的深拷贝
- C语言实现字符串拷贝并逆序的问题
- C语言实现字符串拷贝函数的几种方法
- C语言中字符串拷贝(strcpy)与内存拷贝(memcpy)的实现
- C中字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- C语言中的字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- 字符串拷贝strcpy的实现
- C/C++实现字符串拷贝和截取
- C语言调用汇编语言 实现字符串拷贝
- 【c语言】 my_strcpy 实现字符串拷贝
- C实现内存拷贝以及字符串拷贝函数
- C语言实现字符串拼接和字符串拷贝
- C语言实现字符串拷贝 拷贝指定长度字符串 字符串连接
- 字符串拷贝与内存拷贝的区别 c语言--memcpy()
- C语言-字符串的拷贝指针
- 字符串的拼接和拷贝的实现
- 前台显示上传的图片
- 【1701H1】【穆晨】【171108】第二十九天总结
- scrapy常用的指令总结
- 单链表
- 解压版软件小娜搜索不到问题的解决
- c++实现字符串的深拷贝
- java 反射机制-学习笔记(6)
- 关于JS多态中的重载问题分析
- 计算机网络实验三 :CRC 校验 [17/11/08]
- 练习
- 处理高并发、高访问之Apache优化
- nginx配置虚拟主机相关教程
- android studio 3.0 mac 安装包下载
- STM32F10x_硬件I2C主从通信(轮询发送,中断接收)