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( ) //atentie la scrierea functiilor


{
indice = 0;
}

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;
}

ATENŢIE! Referirea unui membru al unei clase (dintr-o secţiune de cod care nu face parte din CODUL CLASEI
respective) trebuie întotdeauna făcută în legătură cu un obiect al acelei clase. Adică:

nume_obiect . nume_membru
Ex.: stiva1.init( );

N.B. Elementele particulare ale unui obiect sunt accesibile doar funcţiilor 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;
}

Funcţia membră a clasei


Pentru a avea acces la variabilele clasei CLS are ataşată o funcţie de tip membru (member) în corpul clasei (adică
inline) în porţiunea publică a clasei, accesibilă din oricare funcţie inclusiv main( ): void afisare(char *mesaj =” ”).

Restricţii care se aplică membrilor clasei:


- o variabilă membru care nu este de tip static nu poate să aibă o iniţializare;
- nici un membru nu poate fi un obiect al clasei care se declară, dar poate fi un pointer către o clasă declarată;
- nici un membru nu poate fi declarat ca auto, extern sau register.

Reţineţi! În C++, o declarare a unei structuri defineşte un tip de clasă.