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 .
Numele unei proceduri este prefixat de "::". Acest simbol poarta numele englezesc de "scope resolution operator" sau "scope access operator", si este utilizat in operatii de modificare a domeniului de vizibilitate implicit. Un exemplu tipic de utilizare ar fi urmatorul:
Exemplu:
Code: Select all
int i;
void f1( void ) {
int i;
// ...
i++; // se va incrementa "i"-ul local
// ...
}
void f2( void ) {
int i;
// ...
:: i++; // se va incrementa "i"-ul global
// operatorul "::" a facilitat accesarea variabilei cu numele "i"
// aflata intr-un domeniu de vizibilitate mai inalt, si,
// in consecinta, mascata de catre variabila locala "i"
// ...
}
Exemplu:
Code: Select all
class ex {
int contor;
public:
void fct (void);
} ob1;
void ex::fct(void)
// variabila locala diferita de membrul "contor"
int contor;
ex::contor=100; // variabila-membru
for(contor=0; contor < 10; contor++)
// "contor" - ul lui "for" este cel local
ex::contor+=2; .. variabila - membru!!!
}
De fapt, rolul lui "this" nu se margineste la identificarea membrilor unui obiect. Dupa cum vom vedea in capitolele ce urmeaza, exista situatii de implementare in care utilizarea lui "this" este salvatoare. Sa consideram urmatorul exemplu: intentionam sa cream o clasa "lista dublu inlantuita". Daca dorim sa asiguram inserarea unui element in capul listei, clasa poate arata astfel:
Code: Select all
#define NULL 0
class lista {
int numar;
lista *urm, *prec;
static lista *capLista;
public:
void init(int i) {
numar = i;
}
// inserare in capul listei dublu inlantuite
void insert(void) {
urm=capLista;
prec=NULL;
if(capLista)
caplLista->prec=this;
capLista=this;
}
// pentru a se putea face initializarea de mai jos este necesara declararea
// lui *cap_lista ca fiind "STATIC";
lista * lista::capLista=NULL;
void main(void) {
lista l1;
lista l2;
lista l3;
l1.init(1); // obiectul "l1" apeleaza functia membru "init"
l2.init(2);
l3.init(3);
l1.insert(); // obiectul "l1" va fi inserat in lista
l2.insert(); // obiectul "l2" va fi inserat in lista
l3.insert(); // obiectul "l3" va fi inserat in lista
}
[/b]