实现string的构造函数,析构函数,拷贝构造函数

来源:互联网 发布:ip切换器软件 编辑:程序博客网 时间:2024/05/21 11:23

1.实现String类的头文件String.h

#ifndef STRING_H

#define  STRING_H

#include <string.h>

class String

{

public:

String(const char *str=NULL);

String(const String &str);

~String();

String &operatot= (const String &str);

void ShowString();

private:

char *_pMy_Data;

}

2.实现String类的函数实现String.cpp

#include "String.h"

#include <assert.h>

String::String(const char *str)

{

if(NULL==str)

{

_pMy_Data=new char[1];

*_pMy_Data='\0';

}

else

{

int length=strlen(str);

_pMy_Data=new char[length+1];

strcpy(_pMy_Data,str);

}

}

String::~String()

{

delete[] _pMy_Data;

}

String::String(const String &strObj)

{

int length=strlen(strObj._pMy_Data);

_pMy_Data=new char[length+1];

strcpy(_pMy_Data,strObj._pMy_Data);

}

String &String::operator= (const String &strObj)

{

if(this==&strObj)

return *this;

delete [] _pMy_Data;

int length=strlen(strObj._pMy_Data);

_pMy_Data=new char[length+1];

strcpy(_pMyData,strObj._pMy_Data);

return *this;

}

#include <iostream>

void String::ShowString()

{

std::cout<<this->_pMy_Data<<std::endl;

}


3.主程序函数main.cpp

#include <stdio.h>

#include <stdlib.h>

#include "String.h"

int main()

{

String AD;

char *p="ASCD";

String B(p);

AD.ShowString();

AD=B;

AD.ShowString();

getchar ();

return 0;

}

4.输出


ASCD

5.实现自定义的myStrcpy()

char *myStrcpy(char *dest,const char *src)

{

assert( (dest!=NULL) && (src!=NULL) );

char *temp=dest;

while( ( *dest++ = *src++) !='\0')

{}

*dest='\0';

return temp;

}







0 0
原创粉丝点击