Partea4 - 4 Suprancrcarea operatorilor Suprancrcarea...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 4 Suprancrcarea operatorilor Suprancrcarea funciilor i a operatorilor ( overloading ) sunt mecanisme importante n C++ care ofer flexibilitate i extensibilitate limbajului. Pentru tipurile fundamentale ale limbajului sunt definite seturi de operatori care permit operaii de baz executate ntr-un mod convenabil. Dar, dup cum este cunoscut, n limbaj sunt definite prea puine tipuri de date ca date fundamentale, iar pentru reprezentarea altor tipuri care sunt necesare n diferite domenii (cum ar fi aritmetica numerelor complexe, algebra matricilor, etc.), se definesc clase care conin funcii ce pot opera asupra acestor tipuri. Definirea operatorilor care s opereze asupra obiectelor unei clase permite un mod mult mai convenabil de a manipula obiectele dect prin folosirea unor funcii ale clasei. O funcie care definete pentru o clas o operaie echivalent operaiei efectuate de un operator asupra unui tip predefinit este numit funcie operator. Majoritatea operatorilor limbajului C++ pot fi suprancrcai, i anume: new delete () +- * / % ^ & | ~ ! = < > +=-= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++-- ,->*-> Operatorul () este apelul unei funcii, iar operatorul este operatorul de indexare. Urmtorii operatori nu se pot suprancrca: . .* :: ?: sizeof Exist cteva reguli care trebuie s fie respectate la suprancrcarea operatorilor: Funciile operator=(), operator()() i operator() trebuie s fie membri nestatici ai clasei. Cu excepia funciei operator=(), toate celelate funcii operator pot fi motenite. 1 Nu pot fi suprancrcai operatorii pentru tipurile predefinite ale limbajului. Funciile operator nu pot avea argumente implicite. Funciile operator pentru o anumit clas pot s fie sau nu funcii membre ale clasei. Dac nu sunt funcii membre ele sunt, totui, funcii friend ale clasei i trebuie s aib ca argument cel puin un obiect din clasa respectiv sau o referin la aceasta. Excepie fac operatorii = , () , , -> , care nu pot fi suprancrcai folosind funcii friend ale clasei. De asemenea, funciile operator new() i operator delete() au implementri mai deosebite care vor fi detaliate mai jos. 4.1 Funcii operator membre ale claselor Forma general pentru funciile operator membre ale clasei este urmtoarea: tip_returnat operator#(lista_argumente){ // operaii } n aceast form general semnul # reprezint oricare dintre operanzii care pot fi suprancrcai. Exemplul 4.1 Fie o clas Point care descrie un vector ntr-un plan bidimensional prin dou numere de tip double , x i y . Valorile x i y reprezint coordonatele punctului de extremitate al vectorului. Pentru aceast clas se pot defini mai multe operaii cu vectori, ca de exemplu: Suma a doi vectori Diferena a doi vectori Produsul scalar a doi vectori Multiplicarea unui vector cu o constant (scalare)...
View Full Document

Page1 / 24

Partea4 - 4 Suprancrcarea operatorilor Suprancrcarea...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online