Código
Mod: Los códigos deben ir en etiquetas GeSHi
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; class Cadena{ public: Cadena (const char*); Cadena (const Cadena&); Cadena (short); ~Cadena (void); Cadena& operator = (const char*); Cadena& operator = (const Cadena&); char& operator [] (const short); int getLongitud () { return (longitud); } friend Cadena operator + (const Cadena&, const Cadena&); friend ostream& operator << (ostream&, Cadena&); private: char *caracteres; short longitud; }; Cadena::Cadena(const char* c) { longitud= strlen(c); caracteres= new char[longitud]; for(int i=0; i<=longitud; i++) { caracteres[i]= c[i]; } } Cadena::Cadena(const Cadena& c1) { longitud= c1.longitud; caracteres= new char[longitud]; for(int i=0; i<=longitud; i++) { caracteres[i]=c1.caracteres[i]; } } Cadena::~Cadena() { delete (caracteres); } Cadena::Cadena(short c2) { longitud=0; caracteres= new char[c2]; caracteres[0]='\0'; } Cadena &Cadena::operator= (const Cadena& c4) { delete caracteres; longitud= c4.longitud; caracteres= new char[longitud]; for(int i=0; i<=longitud; i++) { caracteres[i]= c4.caracteres[i]; } return *this; } Cadena& Cadena::operator= (const char* c3) { delete caracteres; longitud= strlen(c3); caracteres= new char(longitud); for(int i=0; i<=longitud; i++) { caracteres[i]= c3[i]; } return *this; } char& Cadena::operator[] (const short indice) { static char final = '\0'; return(indice >= 0 && indice < longitud ? caracteres[indice] : final); } Cadena operator + (const Cadena& c5,const Cadena& c6) { short tam; tam=c5.longitud+c6.longitud; Cadena Cadena(tam); Cadena.caracteres=new char[tam]; Cadena.longitud=tam; Cadena=strcat(c5.caracteres, c6.caracteres); return Cadena; } ostream& operator << (ostream &out, Cadena &str) { out << str.caracteres; return(out); } int main () { Cadena cad1("Hola"); Cadena cad2("Chau"); Cadena cad3(3); cout <<"\n Cadena 1: "<<cad1; cout<<"\n Cadena 2: "<<cad2; cad3=cad1+cad2; cout<<"\n Union de cadenas "<<cad3; cout<<"\ncad1[3]: "<<cad1[3]; cad3="YO"; cout<<"\n cadena 3: "<<cad3; cad3[0] = 'T'; cad3[1] = 'U'; cad3[2] = '\0'; cout<<"\n Nueva cadena 3: "<<cad3; cad3=cad1; cout<<"\n cadena 3 asignada a cadena 1: "<<cad3; return(0); system("PAUSE"); }