Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Referirea la elementele claselor. Pointerul this

c



+ Font mai mare | - Font mai mic



Referirea la elementele claselor. Pointerul this

Referirea la datele respectiv functiile membru ale claselor se face cu ajutorul operatorilor . sau -> ca si in cazul referirii la elementele unei structuri. De exemplu daca se declara:

vector v;

vector* p;

atunci afisarea vectorului v respectiv a vectorului referit de pointerul p se face prin:



v.afiseaza();

p->afiseaza();

In interiorul functiilor membru insa referirea la datele respectiv functiile membru ale clasei se face simplu prin numele acestora fara a fi nevoie de operatorul punct ( . ) sau sageata ( -> ). De fapt compilatorul genereaza automat un pointer special, pointerul this, la fiecare apel de functie membru, si foloseste acest pointer pentru identificarea datelor si functiilor membru.

Pointerul this va fi declarat automat ca pointer catre obiectul curent. In cazul exemplului de mai sus pointerul this este adresa vectorului v respectiv adresa referita de pointerul p.

Daca in interiorul corpului functiei membru afiseaza se utilizeaza de exemplu data membru d, atunci ea este interpretata de catre compilator ca si this->d.

Pointerul this poate fi folosit si in mod explicit de catre programator, daca natura problemei necesita acest lucru.

In continuare prezentam un exemplu complet de clasa vector, cu functii membru pentru ridicarea la patrat respectiv afisarea elementelor vectorului, precum si o functie membru pentru adunarea a doi vectori. Fisierul vector3.cpp (contine clasa vector):

#include <iostream.h>

#include <stdlib.h>

class vector

void lapatrat();

vector suma(vector& v1);

void afiseaza();

};

vector::vector(int* e1, int d1)

void vector::lapatrat()

vector vector::suma(vector& v1)

int* x = new int[d];

for(int i = 0; i < d; i++)

x[i] = e[i] + v1.e[i];

vector y(x, d);

delete [] x;

return y;

}

void vector::afiseaza()

Fisierul vector4.cpp (contine functia main):

#include 'vector3.cpp'

int main() ;

vector v(x, 5);

int y[] = ;

vector t(y, 5);

v.suma(t).afiseaza();

return 0;

}



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 713
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved