首页投稿(暂停使用,暂停投稿)C++

String类函数的封装实现

2017-02-14  本文已影响0人  SuperDing

//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;

}

上一篇 下一篇

猜你喜欢

热点阅读