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
/******************************
* 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 p>
************ ****/
#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); p>
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;
} p >
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;
}