Red de conocimiento informático - Computadora portátil - Problema de polimorfismo de C++: defina la clase de cadena CString de la siguiente manera para completar la definición de su función miembro y probarla en la función principal c

Problema de polimorfismo de C++: defina la clase de cadena CString de la siguiente manera para completar la definición de su función miembro y probarla en la función principal c

La puntuación es un poco baja.

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

* cadena.h

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

clase CString

{

privada :

char * str;

público:

CString(char *s);

CString(const CString &st);

~CString();

int strlen() const;

Operador CString +(const CString &s);

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

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

bool operador==(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) eliminar[] str ;

str=NULL;

}

int CString::strlen() const

{

return ::strlen(str);

}

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

{

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

char* tStr=str

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

memcpy (str,tStr, len1);

eliminar[] tStr;

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

str[len1 +len2]=0;

Devuelve *this;

}

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

{

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

char* retstr = nuevo char[len1+len2+

1];

memcpy(retstr,str,len1);

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

retstr[len1+ len2 ]=0;

CString ret(retstr);

eliminar[] retstr;

devolver ret;

}

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

{

if (str) eliminar[] str;

int len= s .strlen();

str=new char[len+1];

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

Regresar *this;

}

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

{

int i=0 ;

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

{

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

devuelve falso;

i++;

}

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

}