[Tutorial C/C++/C#] Redefinirea operatorului [ ]

Locked
User avatar
LaUR SNG
Fondator
Fondator
Posts: 9038
Joined: 8 years ago
Location: SNAGOV
Has thanked: 11 times
Been thanked: 6 times
Zodiac:
Age: 21
Contact:
Status: Offline
Romania

8 years ago

Nume Tutorial: Redefinirea operatorului [ ]
Descriere: Un tutorial folositor pentru cei care lucreaza in limbajul de programare C++
Download: -
Autor: Nu este specificat
Sursa (Link-ul oficial): -
tutorialeprogramare.ro


Propria parere: Folositor
Tutorialul: Mai jos .

Termenul englezesc "subscript" desemneaza operatorul "[ ]", care este un operator binar ne-static. Al doilea operand al sau ("indexul") poate fi, practic, de orice tip. O linie de program de genul "a" va fi interpretata ca "a.operator[](b)".

Exemplu:

Code: Select all

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

class exemplu;

class persoana {
char nume[20];
double greutate;

friend exemplu;

public:

// initializarea unui obiect de tipul "persoana"
void init(char *p, double g) {
greutate=g;
strncpy(nume, p, 19);
nume[19]='\0';
}

// tipareste informatiile dintr-un obiect "persoana"
void tip(void) {
// se testeaza valoarea lui "this" deoarece "tip()"
// poate fi aplicat asupra rezultatului unui operator "[ ]"
// (care poate fi NULL)
if(this!=NULL)
cout<<"\n\tNume: "<<nume<<" Greutate: "<<greutate; 
else cout<<"\nElement inexistent !!!";
}
};

class exemplu {
persoana sir[3];

public:
exemplu(void);
persoana *operator[](char *);
persoana *operator[](double);
persoana *operator[](int i) {
// testeaza apartenenta indexului la domeniul 
// de valori corecte
if(i < 3)
return & sir[i];
else return NULL;
}
};

// initializeaza cele trei elemente ale lui "sir"
exemplu::exemplu(void) {
for(int i=0; i < 3; i++) {
char n[20];
double d;
cout<<"\nTastati un nume si o greutate: ";
cin>>n>>d;
sir[i].init(n, d);
}
}

// parcurge tot sirul cautand un element
// cu numele "string"
persoana *exemplu::operator[](char *string) {
for(int i=0; i < 3; i++)
if(strcmp(sir[i].nume, string)==0)
return &sir[i];

return NULL;
}

// parcurge sirul cautand un element
// cu greutatea "greutate"
persoana * exemplu::operator[](double greutate) {
for(int i=0; i<3; i++)
if(sir[i].greutate==greutate)
return &sir[i];

return NULL;
}

void main(void) {
exemplu e;

e["Andrei"]->tip();
e[67.3]->tip();
e[10]->tip();
}
[/b]
„Iubiti totul cu toată inima ... căci viața se termină când vrea ea si pe nepusă masă !” – LaUR SNG

https://photos.app.goo.gl/WbQsF4C9QfvDvWSo6

Curios ? Nu il deschide :13:

[spoiler]Image[/spoiler]
[spoiler]Image[/spoiler]

https://www.facebook.com/10043517804227 ... 039605115/
Locked

Return to “C / C++ / C#”