c++常见题目,编写string类

来源:互联网 发布:csm算法 编辑:程序博客网 时间:2024/06/05 07:41

代码如下:

#include <string.h>#include <iostream>using std::cout;using std::endl;class String{    public:        String(const char *src = NULL);//构造函数        String(const String &other);//拷贝构造函数        ~String(void);//析构函数        String & operator =(const String &other);//赋值函数        void ShowString();    private:            char *m_data;};//String 的构造函数String::String(const char *src){    if(src == NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'\0';    {        m_data = new char[1];        *m_data = '\0';    }    else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;    {        int length = strlen(src);        m_data = new char[length+1];        strcpy(m_data,src);    }}//析构函数String::~String(){    delete [] m_data;//析构函数释放地址空间}//拷贝构造函数 ,功能与构造函数类似String::String(const String &other){    int length = strlen(other.m_data);    m_data = new char[length + 1];    strcpy(m_data,other.m_data);}//赋值函数String& String::operator = (const String &other){    if(this == &other)return *this;//当地址相同时,直接返回    delete [] m_data;//当地址不同时,删除原来申请的空间,重新开始构造    int length = strlen(other.m_data);    m_data = new char[length + 1];    strcpy(m_data,other.m_data);    return *this;}void String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问{    cout<<this->m_data<<endl;}int main(){    String s1;    char *p = "ABCDEFGH";    String s2(p);    s1.ShowString();    s1 = s2;    s2.ShowString();    system("pause");    return 0;}




参考文献:

[1] http://blog.csdn.net/xiaobo620/article/details/7396552

0 0