當前位置:編程學習大全網 - 編程語言 - c++ 多態問題 定義字符串類CString如下 請完成其成員函數定義 並在主函數中進行測試 c

c++ 多態問題 定義字符串類CString如下 請完成其成員函數定義 並在主函數中進行測試 c

分數有點少啊。。。

/******************************

* string.h

*************/

class CString

{

private:

char *str;

public:

CString(char *s);

CString(const CString &st);

~CString();

int strlen() const;

CString operator +(const CString &s);

CString &operator +=(const CString &s);

CString &operator =(const CString &s);

bool operator==(const CString &s);

};

/******************************

* string.cpp

*************/

#include "String.h"

CString::CString(char *s)

{

int len=::strlen(s);

str=new char[len+1];

memcpy(str,s,len+1);

}

CString::CString(const CString &st)

{

int len=::strlen(st.str);

str=new char[len+1];

memcpy(str,st.str,len+1);

}

CString::~CString()

{

if (str) delete[] str;

str=NULL;

}

int CString::strlen() const

{

return ::strlen(str);

}

CString& CString::operator +=(const CString &s)

{

int len1=strlen(),len2=s.strlen();

char* tStr=str;

str=new char[len1+len2+1];

memcpy(str,tStr,len1);

delete[] tStr;

memcpy(str+len1,s.str,len2);

str[len1+len2]=0;

return *this;

}

CString CString::operator +(const CString &s)

{

int len1=strlen(),len2=s.strlen();

char* retstr = new char[len1+len2+1];

memcpy(retstr,str,len1);

memcpy(retstr+len1,s.str,len2);

retstr[len1+len2]=0;

CString ret(retstr);

delete[] retstr;

return ret;

}

CString& CString::operator =(const CString &s)

{

if (str) delete[] str;

int len=s.strlen();

str=new char[len+1];

memcpy(str,s.str,len+1);

return *this;

}

bool CString::operator==(const CString &s)

{

int i=0;

while (str[i] && s.str[i])

{

if (str[i]!=s.str[i])

return false;

i++;

}

return str[i]==0 && s.str[i]==0;

}

  • 上一篇:5部腦洞大開的科幻太空類電影,不容錯過
  • 下一篇:如何用純Win32 SDK編寫GUI程序
  • copyright 2024編程學習大全網