[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 .

O expresie de genul "a->m" se va interpreta ca "(a.operator->())->m". Din acest motiv functia-operator va trebui sa returneze fie un pointer la o instantiere a unei clase, fie un obiect de un tip pentru care este redefinit operatorul "->".

Exemplu:

Code: Select all

#include <iostream.h>
#include <conio.h>

struct ex {
int membru;
};

class exemplul_1 {
struct ex * pointer;

public:

void set(struct ex &p) {
pointer=&p;
}

struct ex * operator->(void) {
return pointer;
}
};

class exemplul_2 {
exemplul_1 *pointer;

public:
void set(exemplul_1 &p) {
pointer=&p;
}

exemplul_1 operator->(void) {
return *pointer;
}
};

void main(void) {
struct ex s;
exemplul_1 e1;
exemplul_2 e2;

e1.set(s);

e1->membru=3; // ATENTIE: Este un apel al functiei
// "exemplul_1::operator->()"

cout<<e1->membru<<"\n";
// se va tipari valoarea 3 

e2.set(e1);
e2->membru=5; // Atentie: Sunt doua apeluri de
// functii operator:
// ("exemplul_2::operator->()"
// si "exemplul_1::operator->()");

cout<<e2->membru<<"\n";
// se va tipari valoarea 5
}
[/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#”