String类函数的封装实现

作者: SuperDing | 来源:发表于2017-02-14 10:30 被阅读0次

    //String.h

    ifndef MYSTRING_H

    define MYSTRING_H

    include<iostream>

    include<string>

    include<string.h>

    include<stdlib.h>

    using namespace std;
    class MyString
    {
    char *m_pData;
    public:
    MyString();//构造函数
    MyString(const char *pData);//构造函数
    MyString(const MyString &str);//深拷贝构造函数
    ~MyString();//析构构造函数

    bool empty();//是否清空
    void clear();//清空
    
    int size();//计算长度
    

    //每一个普通的成员函数都有一个隐藏的形参,
    //该函数返回的类型为该形参的类型
    //该形参的名字为this

    char *data()//打印
    {
         if(NULL!=m_pData)
        {
           cout<<"m_pData="<<m_pData<<endl;
        }
    }
    

    };

    endif

    //mystring.cpp

    include"myString.h"

    MyString::MyString()
    {
    cout<<"MyString()"<<endl;
    }

    MyString::MyString(const char *pData)
    {
    m_pData==NULL;
    if(NULL!=pData)
    {
    int k=strlen(pData)+1;
    m_pData=new char[k];
    if(NULL!=m_pData)
    {
    strcpy(m_pData,pData);
    }
    }
    }

    MyString::MyString(const MyString &str)
    {
    m_pData==NULL;
    if(str.m_pData)
    {
    int k=strlen(str.m_pData)+1;
    m_pData=new char[k];
    if(NULL!=m_pData)
    {
    strcpy(m_pData,str.m_pData);
    }
    }
    }

    MyString::~MyString()
    {
    if(NULL!=m_pData)
    {
    delete []m_pData;
    m_pData=NULL;
    }
    }
    //是否清空
    bool MyString::empty()
    {
    if(m_pData==NULL)
    {
    return false;
    }
    return true;
    }
    //清空
    void MyString::clear()
    {
    if( empty() )
    {
    delete m_pData;
    m_pData=NULL;
    }
    }

    int MyString::size()
    {
    if(m_pData==NULL)
    {
    return 0;
    }
    return strlen(m_pData);
    }

    //main.cpp

    include"myString.h"

    int main()
    {
    MyString str1("helloWorld");
    str1.data();
    cout<<str1.size()<<endl;

    MyString str2=str1;
    str2.data();
    cout<<str2.size()<<endl;
    
    str2.clear();
    str2.data();
    cout<<"sddsd"<<endl;
    return 0;
    

    }

    相关文章

      网友评论

        本文标题:String类函数的封装实现

        本文链接:https://www.haomeiwen.com/subject/aalxwttx.html