Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, Uždarbiečiai,

Iškilo man keletas klausimėlių apie operator overloading (?operatorių perklojimą?).

1. Ar jie yra plačiai naudojami programavime?

2. Ar jie yra būtini? (ta prasme ar yra galimybė juos apeiti, neprarandant performance?)

3. Gal galit parekomenduot kur lietuvių kalbą būtų galima apsišviesti šia tema? :D (nes tikrai daug laiko skaičiau, bet net negaliu pasakyti jog viską supratau)

4. Kas tas explicit? Gal kas turit nuorodą kur aiškiai išdėstyta informacija (šioj vietoj būtų geriausia lietuvių kalba)

Dėkoju už jūsų atsakymus :)

Redagavo tiporimvis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Operator overloading yra naudojamas nuo situacijos. Pavyzdžiui aš turiu du objektus ir noriu juos palyginti, ir žinau, kad objekto unikalumas yra pvz palei vieną ar du property. Tuomet permušu == operatorių, kad atsižvelgtų tik į tuos property. Kokia nauda? Kartais tiesiog reikia specifinio palyginimo ir nesinori rašyti pvz if(obj1.pr1 == obj2.pr1 && obj1.pr2 = obj2.pr2) keliuose vietose. Permuši klasėje ir viskas, visą laiką naudoji taip.

Realiai kol nesusidūriai su situacija, nelabai žinosi kaip tai panaudoti :) Man pvz reikėjo lyginti filtrų objektus, kurių unikalumas realiai yra name ir user'is.

 

2. Perfomance kažin ar čia klausimas. Man atrodo tiesiog aiškumo duoda kode.

 

3. Deja, bet viskas angliškai ;) Ir geriau mokytis anglų, nes dirbdamas vistiek info ieškosi pastoviai anglų kalba, nes lietuvių nerasi visos info...

 

4. Manau aiškiai išdėstyta čia http://msdn.microsoft.com/ . Permetus akį, tai yra realiai castinimo operatorius. Kai nori iš objekto A padaryti B, bet A klasė nėra paveldėta nuo B. Ir gan geras pavyzdukas čia pateiktas :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Sakyčiau kad ne itin dažnai, nes ne kiekviena kalba palaiko, o ir dauguma operatorių yra susiję su kažkokiais aritmetiniais veiksmais. Gal tik palyginimo operatoriai yra dažnesni. Bet, pavyzdžiui, Java kalboje išsiverčiama ir be operatorių užklojimo.

 

2. Dažniausiai yra pačio pasirinkimas, kaip tu nori, kad tavo kodas atrodytų. Bet yra atvejų, kai tai yra būtina, pavyzdžiui: jeigu nori paduoti savo palyginimo funkciją funkcijai sort(), turi užkloti operatorių „()“.

 

3. Tas operatorių užklojimas niekuo nesiskiria nuo paprastų funcijų. Tiesiog kitokį pavadinimą rašai.

Vietoj

Class sudeti(Class a, Class b){ ... }

rašai

Class operator+(Class a, Class b){ ... }

 

Arba vietoj

Class Class::prideti(Class b){ ... }

rašai

Class Class::operator+(Class b){ ... }

 

Kai kuriems operatoriams galimas tik pastaroji (klasės metodo) užrašymo forma http://www.cplusplus.com/doc/tutorial/templates/ .

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Operatorių overloadinimas yra skirtas patogumui ir aiškumui: vietoj a.pridėti(b) rašai a + b. Taip pat cpp naudoja friend funkciją "ostream &operator<<(ostream &out, SomeClass obj)" outputinimui į streamą (pvz., cout). Paprastas pvz:

struct C {
 int a
 C(int aa) { a=aa }
 friend std::ostream &operator<<(std::ostream &os, C c) { os << "C(" << c.a << ")" }
}
C obj(5)
std::cout << C // outputs C(5)

 

Kabliataškius susidėk pats - tingiu telefone juos dėti.

 

Beje, ši (op overload) funkcija turi būti naudojama saikingai. Pvz., nedefinink + klasėje Person, kuri aaugo žmogaus vardą ir pajamas, tam, kad sudėtum abiejų pajamas - sunku suprasti ką sudedi.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...