This shows you the differences between two versions of the page.
poo-is:laboratoare:02 [2020/10/01 12:05] alexandru.ionita99 [3. Functii membre ale unei structuri] |
poo-is:laboratoare:02 [2020/10/01 12:27] (current) alexandru.ionita99 [3. Functii membre ale unei structuri] |
||
---|---|---|---|
Line 50: | Line 50: | ||
Pentru a modifica campurile unei variabile de tip struct, putem utiliza **functiile membre** (**metode**). Aceste functii au urmatoarele caracteristici: \\ | Pentru a modifica campurile unei variabile de tip struct, putem utiliza **functiile membre** (**metode**). Aceste functii au urmatoarele caracteristici: \\ | ||
- | * variabila struct asupra careia se lucreaza nu este data ca parametru | + | * variabila struct asupra careia se lucreaza **nu** este data ca parametru |
+ | * nu cresc dimensiunea tipului de date | ||
+ | * au acces direct la campurile structurii, inclusiv cele declarate **private** | ||
+ | |||
+ | Vom prezenta un exemplu de utilizare al acestor functii. Utilitatea lor se va vedea mai bine in cazul programarii obiectuale. \\ | ||
+ | Exemplul poate fi rulat [[https://repl.it/@alexionita99/lab2struct|aici]] | ||
+ | |||
+ | <code cpp> | ||
+ | #include <iostream> | ||
+ | #include <cstdlib> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | struct point{ | ||
+ | private: //altfel, sunt implicit public | ||
+ | int x; | ||
+ | int y; | ||
+ | public: //pentru a fi vizibile de oriunde | ||
+ | void modificare(int, int); //implementarile functiilor se face | ||
+ | void afisare(); //dupa definirea structurii | ||
+ | }; | ||
+ | |||
+ | //Implementarea metodelor din struct | ||
+ | void point::modificare(int xx, int yy) | ||
+ | { | ||
+ | x = xx; //functiile membre au acces la campurile private | ||
+ | y = yy; | ||
+ | } | ||
+ | |||
+ | void point::afisare() | ||
+ | { | ||
+ | cout << x << " " << y << endl; | ||
+ | } | ||
+ | |||
+ | |||
+ | int main() | ||
+ | { | ||
+ | point p; //declararea unei variabile de tip struct point | ||
+ | |||
+ | //Apelam metodele pentru variabila p. Nu o dam ca parametru: | ||
+ | |||
+ | p.afisare(); //va afisa ce se afla in memorie, la adresele campurilor x si y | ||
+ | |||
+ | p.modificare(3, 3); //modificam valorile lui x si y folosind functia membra | ||
+ | |||
+ | p.afisare(); //va afisa noile valori 3 si 3 | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </code> | ||
===== 4. Functii Inline ===== | ===== 4. Functii Inline ===== | ||