Sunteți pe pagina 1din 2

Clase n C++ #include<iostream.

h> //pentru 'cout' #define SIZE 10 class stiva //C// class defineste un nou tip (tipul stiva) { //O// Sectiunea particulara cu membrii sai int stiv[SIZE]; //D// (variabilele membre) int indice; //////____________________________ public: //C// void init(); //L// Sectiunea publica cu membrii sai void pune(int val); //A// (functiile membre) int scoate(); //S// }; //A//_____________________________ void stiva::init( ) { indice = 0; } //atentie la scrierea functiilor

void stiva::pune(int val) { if (indice == SIZE) cout<<"Stiva este plina!"; stiv[indice]=val; indice++; } int stiva::scoate( ) { if (indice==0) cout<<"S-a ajuns la limita de jos!"; indice--; return stiv[indice]; } main( ) { stiva stiva1; // se creaza un obiect(variabila) de tip stiva stiva1.init( ); stiva1.pune(200); stiva1.pune(45435); cout<<stiva1.scoate( )<<"\n"; cout<<stiva1.scoate( )<<"\n"; cout<<stiva1.scoate( )<<"\n"; cout<<stiva1.indice<<"\n"; // error: nu se poate accesa un membru privat return 0; } ATENIE! Referirea unui membru al unei clase (dintr-o seciune de cod care nu face parte din CODUL CLASEI respective) trebuie ntotdeauna fcut n legtur cu un obiect al acelei clase. Adic: nume_obiect

. nume_membru

Ex.: stiva1.init( ); N.B. Elementele particulare ale unui obiect sunt accesibile doar funciilor care sunt membre ale acelui obiect. Alt exemplu:

#include<iostream.h> //pentru cout #include<stdio.h> //pentru printf( ) class CLS //se defineste un nou tip de date { int a, b; //sectiunea privata public: CLS(int z = 0) //constructorul { a = b = z; } void afisare(char *mesaj = "") //functie inline { printf("%s a si b = %d %d\n", mesaj, a, b); } }; struct STRU { int a, b; //totul este public aici STRU(int z = 0) //constructorul { a = b = z; } }; void main() { CLS obiect_cls(1); //se definesc STRU obiect_stru(10); //obiectele cout<<endl; obiect_cls.afisare("'afisare()' publica din CLS are acces la 'a' si 'b' private din CLS\n"); obiect_stru.a = 100; //a si b din STRU pot fi modificate ptr. ca sunt publice cout<<"obiect_stru.a = "<<obiect_stru.a<<endl; } Funcia membr a clasei Pentru a avea acces la variabilele clasei CLS are ataat o funcie de tip membru (member) n corpul clasei (adic inline) n poriunea public a clasei, accesibil din oricare funcie inclusiv main( ): void afisare(char *mesaj = ). Restricii care se aplic membrilor clasei: - o variabil membru care nu este de tip static nu poate s aib o iniializare; - nici un membru nu poate fi un obiect al clasei care se declar, dar poate fi un pointer ctre o clas declarat; - nici un membru nu poate fi declarat ca auto, extern sau register. Reinei! n C++, o declarare a unei structuri definete un tip de clas.