【C++】模拟string类的实现(string 类的深拷贝)
2015-08-26 15:24
597 查看
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class String { public: String() :_pstr(new char[1]) { _pstr[0] = '\0'; } String(char *pstr) :_pstr(new char[strlen(pstr) + 1]) { strcpy(_pstr, pstr); } ~String() { if (_pstr) { delete[] _pstr; } } String(const String &S) :_pstr (new char[strlen(S._pstr) + 1]) { strcpy(_pstr, S._pstr); } String&operator=(const String &S) { if (this != &S) { delete []_pstr; _pstr = new char[strlen(S._pstr) + 1]; strcpy(_pstr, S._pstr); } return *this; } //优化写法 /*void Swap(String &s) { char *tmp = _pstr; _pstr = s._pstr; s._pstr = tmp; } String(const String &s) :_pstr(NULL) { String tmp(s._pstr); Swap(tmp); }*/ /*String&operator=(const String &s) { if (this != &s) { String tmp(s._pstr); Swap(tmp); } return *this; }*/ //优化赋值运算符重载 /*void Swap(String s) { char *tmp = _pstr; _pstr = s._pstr; s._pstr = tmp; } String &operator=(const String &s) { Swap(s); return *this; }*/ void GetStr() { cout << _pstr << endl; } private: char *_pstr; }; int main() { String op1("abcdef"); op1.GetStr(); String op2 = op1; op2.GetStr(); String op3; op3 = op1; op3.GetStr(); system("pause"); return 0; }
相关文章推荐
- 详解C语言中的memset()函数
- C/C++面试题(一)
- C++ 释放vector中的元素
- C++new和delete实现原理
- C++ 将string转换成char*字符串
- C++11 智能指针
- C语言malloc和free实现原理
- 动态分配三维数组
- OutMan——C语言中字符串处理函数、内存管理和内存分区
- 原码、反码、补码
- C/C++面试常见关键字总结(二)
- Effective C++——条款4(第1章)
- Effective C++——条款3(第1章)
- Java 与C++区别:复写(override)
- 海量数据处理系列之:用C++实现Bitmap算法
- C++ 范式工厂
- 黑马程序员——C语言中的printf函数
- Codevs 1021 玛丽卡
- c++基础(一)
- C++中的内存分配问题