實現string的構造函數,析構函數,拷貝構造函數

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;

}







發佈了42 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章