自我实现一个简洁版的String类——1
2017-10-20 20:40
162 查看
在C++中有C没有的string字符串类型,string类型的数据其实是一个指向字符串首地址的指针变量,因此在string类的默认成员函数拷贝构造和赋值运算符的重载就会涉及到深浅拷贝的问题,一不小心要么就是内存泄露要么就是多次释放同一块空间导致程序崩溃,下面就来模拟实现一个简洁版的String类:
既然是指向一个字符串的指针,因此类的成员变量就需要有一个char*类型的指针;
[code=cpp;toolbar:false">#include <iostream>#include <string.h>using namespace std;class CMyString{public: CMyString(const char* str); CMyString(const CMyString& s); CMyString& operator=(CMyString s); //CMyString& operator=(const CMyString& s); ~CMyString(); void print_string();private: char* _str;};上面为简单的CMyString类的声明,接下来要实现最主要的四个默认的成员函数:
CMyString::CMyString(const CMyString& s) :_str(NULL){ CMyString tmp(s._str);//用前面实现的构造函数构造出一个值为s._str的临时类对象 swap(_str, tmp._str);//交换临时类的字符串和_str,这样当tmp出了作用域就会自动释放}
既然是指向一个字符串的指针,因此类的成员变量就需要有一个char*类型的指针;
[code=cpp;toolbar:false">#include <iostream>#include <string.h>using namespace std;class CMyString{public: CMyString(const char* str); CMyString(const CMyString& s); CMyString& operator=(CMyString s); //CMyString& operator=(const CMyString& s); ~CMyString(); void print_string();private: char* _str;};上面为简单的CMyString类的声明,接下来要实现最主要的四个默认的成员函数:
CMyString::CMyString(const CMyString& s) :_str(NULL){ CMyString tmp(s._str);//用前面实现的构造函数构造出一个值为s._str的临时类对象 swap(_str, tmp._str);//交换临时类的字符串和_str,这样当tmp出了作用域就会自动释放}
相关文章推荐
- 自我实现一个简洁版的String类――1
- 实现一个简洁版的String类
- 设计一个string类,通过重载“+=”运算符,实现对两个string类对象m1,m2的操作。
- 一个简单的string类实现
- 自己实现一个String类
- 一个string类的简单实现
- 【4】实现一个简单的String类
- 一个简单的string类实现
- 1.实现一个string类
- 自己动手实现一个简单的string类(三)
- 实现一个String类
- 一个string类的简单实现
- C++面试题(二)——自己实现一个String类
- c++ — 实现一个简单的string类
- string类和智能指针(简洁版)和shareptr简洁版代码实现
- 自己动手实现一个简单的String类
- String类的一个实现
- 一个简单的string类实现
- 一个string类的简单实现案例
- !!! STL的string类如何实现CString的Format功能 这是一个经典问题,记住