Professional Documents
Culture Documents
Сврха оператора
У објектно оријентисаном програмском језику као што је C#, преоптерећење оператора
пружа много природнији начин имплементације операција на произвољним типовима као што су
класе. Претпоставимо да имамо класу која представља рационални или комплексни број и
желимо да са објектима ове класе извршавамо све аритметичке операције. Један од начина за
то је да направимо функције као што су Dodaj и Pomnozi у оквиру класе и тиме обезбедимо ову
функционалност. Употреба ових метода класе би изгледала овако:
Позив на овај начин дефинисаних метода је гломазан и неприродан за запис проблема који
треба решити. Било би много лакше имати оператор + за операцију додавања и оператер * за
производ као код простих типова података. Други начин је да направимо преоптерећене верзије
оператора који важе за задату класу, као што су operator + и operator *, који ће се користити за
овај тип података. Следећи пример показује како изгледа употреба оператора:
Преоптерећење оператoра пружа много природнији начин записа ових операција за овакве
типове података (класе). Овакав запис је много елегантнији и лакши за рад. За један позив
оператора, може се тврдити да количина рада за имплементацију првог или другог начина, тј.
једне синтаксе у односу на другу, приближно иста. Међутим, када се повезују више
математичких операција, синтакса која користи операторе је много једноставнија. Поред тога,
ако су најважнији корисници новог типа података (класе) математичари и научници, оператори
су интуитивнији и природнији.
Типови оператора који се могу преоптеретити су: унарни оператери, бинарни оператери,
релациони оператери, логички оператори, оператори индексирања и оператори конверзије.
Међутим, није могуће преоптерећење свих оператера, већ постоје ограничења која су наведена у следећој табели:
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, Оператори доделе не могу бити преоптерећени,
>>= али се
на пример, резултат оператор += добија
користећи
оператор +, који се може преоптерети.