详解C++中实现继承string类的MyString类的步骤

2020-01-06 15:03:06刘景俊
易采站长站为您分析C++中实现继承string类的MyString类的步骤,其中的要点是要实现运算符的重载,需要的朋友可以参考下  

昨天师兄又出了道测试题,让我们实现类似于string类的没有MyString类,刚开始很头疼,可是真正在自己写代码的时候又很兴奋的发现,这个过程真的是个很宝贵的机会,让我又有机会可以很好的熟悉回顾C++的很多知识—类设计,构造析构函数,成员函数,友元函数,引用,重载,字符串操作,动态内存分布。。。。。于是昨天花了半天时间写了300多行代码,并认真的进行了相关测试、修改和总结。因为内容有点丰富,所以想分几次写出来,条理也清楚些。

类的空间分配:类给它的每个对象都分配了独立的空间去存储它的数据成员,所有的对象公共的访问类方法进行操作。同时在对象的独立空间中,不包括数据成员动态分配的空间,对象只是记录了动态分配空间的地址(所以在析构函数调用的时候只是删除了对像空间,同时需要用new来删除动态分配的地址)。

一、类声明—mystring.h:
1. 构造函数:
专门用于构建新对象,给成员数据分配必要的内存空间并将值赋给新对象的成员数据。
默认构造函数:
在未提供显式初始化值时,被用来创建对象的构造函数(所以它一般没有参数)


MyString();

复制构造函数:
用于将一个对象复制到新创建的对象中(当然这个被复制的对象必须已经存在)。


MyString(const MyString &str);

给定了一定初始化参数的构造函数:
参数列表中的值会一次赋给新创建对象的各个成员函数:


MyString(const char*str);

2.析构函数:
当对象过期时删除对象所占的内存空间,并且当对象创建时有用New请求的内存空时,在析构函数中同时要调用delete对原来分配的 内存空间进行释放,以防止内存泄露。
~MyString();

3.成员函数:
重载赋值成员函数:


MyString &operator=(const MyString &str);    //利用已有的string对象通过=给一个对象进行赋值
MyString &operator=(const char*str);       //直接用常量字符串进行赋值

一般赋值函数:


MyString &assign(const MyString&str);
MyString &assign(const char*sstr);