Descriere: Un tutorial folositor pentru cei care lucreaza in limbajul de programare C++
Download: -
Autor: Nu este specificat
Sursa (Link-ul oficial): -
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
}