Sunteți pe pagina 1din 1

Supraîncărcarea operatorilor

#include<iostream.h>
#include<string.h>

class SIR
{
char *text; //membru privat (singurul)
public:
SIR(char *sir); //definitia constructorului
~SIR( ) //definitia destructorului
{
delete text;
}

int compar(SIR &s1, SIR &s2); //fct. cu 2 param. de tip referinta la sir tipul SIR?
int compar(SIR &s1, SIR &s2, int n); //supraincarcarea functiei compar

void operator || (SIR &s) //supraincarcarea operatorului "||"


{
strcat(text, s.text);
}

void afisare( ) //un obiect de tip SIR nu are acces la un un membru privat decat
{ //printr-un membru(functie) publica
cout<<text;
}
}; // sfarsitul lui class SIR

SIR::SIR(char *sir)
{
text = new char[strlen(sir)]; //text pointeaza la o zona de memorie alocata cu new
strcpy(text, sir); //compara text(privat) cu sir(public)
}/* Se aloca memorie pentru text si se copie sir in text*/

int SIR::compar(SIR &s1, SIR &s2) //am definit s1 si s2 (referinta la SIR?)


{
return strcmp(s1.text, s2.text); //obiect='s1', membru='text'
}

int SIR::compar(SIR &s1, SIR &s2,int n)


{
return strncmp(s1.text, s2.text, n); //obiect='s1', membru='text' (obiect.membru)
}

void main(void)
{
SIR sir1("abc"), sir2("abcd"); //am creat 2 obiect de tip SIR

cout<<"sir1.afisare ";sir1.afisare();cout<<endl;
cout<<"sir2.afisare ";sir2.afisare();cout<<endl;

cout<<"sir1.compar(sir1, sir2) = "<<sir1.compar(sir1, sir2)<<endl;


cout<<"sir1.compar(sir1, sir2, 3) = "<<sir1.compar(sir1, sir2, 3)<<endl;

sir1||sir2; //operatoul || este redefinit si concateneaza cele doua siruri

cout<<"sir1 ";sir1.afisare();cout<<"\n";
}

S-ar putea să vă placă și