//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;
}
网友评论