您的位置:首页 > 其它

自我实现一个简洁版的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出了作用域就会自动释放}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: