Curs C++ | Sectiunea 18 – Functii (Declarare & Definire)
Desi am vorbit pe scurt in sectiunea anterioara despre aceste doua aspecte, le vom analiza mai in amanunt acum.
Declararea functiei
💡 Are rolul de a informa compilatorul despre numele functiei, tipul de date returnat si tipul parametrilor. O sintaxa generala a declararii functiei (prototipul functiei) ar arata astfel:
- return_type descrie tipul rezultatului returnat de functie; putem folosi orice tip de date inclusiv un tip special numit void
- function_name este un identificator ce numeste functia si o distinge de celelalte functii
- parameters_type este o lista separata prin virgula ce cuprinde tipul parametrilor folositi; numele poate fi omis; daca nu avem parametrii putem lasa liber sau scrie keyword-ul void
❗ O functie de tip void nu returneaza niciun rezultat iar daca omitem return_type, compilatorul va presupune ca functia returneaza un tip int.
In exemplul de mai sus avem o functie numita function_one ce nu are niciun rezultat si niciun parametru. Sa aruncam o privire pe urmatorul exemplu.
Pentru exemplul anterior, ambele declarari sunt echivalente. Numele parametrului x nu are nicio insemnatate pentru compilator si este ignorat. Desi fiecare element din lista de parametrii este asemanatoare cu declararea variabilelor si am fi tentati sa scriem astfel in cazul mai multora:
❗ Vom avea insa eroarea ‘y’ has not been declared . Astfel, deducem ca in lista parametrilor trebuie scrisi fiecare individual, separati prin virgula, dupa cum urmeaza:
Definirea functiei
💡 Definitia unei functii reprezinta codul ce va fi executat la fiecare invocare a functiei. Spre deosebire de declarare, se adauga intre acolade si corpul functiei, adica un set de instructiuni.
Daca rezultatul returnat este de tip void, corpul functiei poate sa nu contina instructiunea return, dar daca ne dorim totusi sa o scriem, va fi de forma urmatoare:
❗ Daca return_type nu este void, corpul trebuie sa contina cel putin o instructiune return conform tipului functiei. Putem avea cate instructiuni return dorim, in functie de codul si algoritmul nostru.
📝 Putem bineinteles, in corpul functiei sa apelam o alta functie creata tot de noi, sau chiar mai multe, atata timp cat tinem cont sa avem declararea lor inainte sa fie invocate.
Invocarea functiei
Asa cum am discutat anterior, valoarea returnata poate exista fiind de un tip anume, sau poate fi de tip void. Sa presupunem ca avem urmatoarele doua functii:
- Singurul mod in care putem invoca void_function este astfel:
- Pe de alta parte, non_void_function poate fi invocata in doua moduri:
💡 Deducem astfel ca rezultatul returnat de orice functie diferita de void (non-void function) poate fi asignat unei variabile de un tip corespunzator, ori pur si simplu ignorat de invocator.
Aici se termina si aceasta sectiune, vom continua in urmatoarea sectiune povestea noastra despre functii 🙂 . Pentru intrebari suplimentare folositi informatiile de aici.
➡ Sectiunea anterioara:Curs C++ | Sectiunea 17 – Functii
➡ Sectiunea urmaoare:Curs C++ | Sectiunea 19 – Functii (Transmitere de parametri)

