Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

preklapanje operatora

[es] :: C/C++ programiranje :: preklapanje operatora

[ Pregleda: 1563 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

IvaVuk
Beograd, Srbija

Član broj: 340767
Poruke: 2
*.dynamic.sbb.rs.



Profil

icon preklapanje operatora19.08.2019. u 13:19 - pre 56 meseci
Da li neko ima neki najprostiji primer preklapanja operatora u C++?
Da nisu kompleksni brojevi, da nisu vektori i da nisu neke teske klase?
I da li neko moze da objasni lepo, srpski, koji ce nam djavo preklapanje operatora?
Unapred hvala
PS. Citah ranije postove na ovu temu ali mi i dalje nista nije jasno.
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: preklapanje operatora19.08.2019. u 13:28 - pre 56 meseci
Pa kad "sabiraš" brojeve i stringove, kud ćeš jednostavniji primer ^_^
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.unitymedia.biz.



+7169 Profil

icon Re: preklapanje operatora19.08.2019. u 13:47 - pre 56 meseci
Citat:
IvaVuk
koji ce nam djavo preklapanje operatora?


Da bi ostatak koda bio jednostavan za pracenje i odrzavanje.

Zamisli recimo da implementiras klasu vektora. Ako operacije poput skalarnog proizvoda ili dodeljivanja vrednosti implementiras kao operatore, svakome ko cita kod ce biti jasno sta se desava, a sam kod ce biti cist.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: preklapanje operatora19.08.2019. u 14:50 - pre 56 meseci
Evo ti primer bez "teških" klasa.
Preopterećen je operator "<<" u klasi Ljubimac.
Operator je inače već preopterećen u ostream da služi za ispis (inače je to left shift operator).
Preopterećen je i "+", u prvom slučaju je to sabiranje dva int podatka, u drugom konkatenacija stringova


Code:

#include <iostream>

using namespace std;

class Ljubimac {
    private:
    string vrsta, ime;
    
    public:
    
    Ljubimac( string v, string i) { vrsta=v; ime = i;}
    
    friend ostream& operator << (ostream& os, const Ljubimac& pet) {
        os << "Moj ljubimac je " << pet.vrsta << " " << "po imenu " << pet.ime << "\n";
        return os;
    }
};

int main()
{
    Ljubimac Eva("mačka", "Eva"); 
    cout << Eva;
    cout << 3 + 4 << "\n";
    cout << string("Hello") + string(" World") << "\n";

    return 0;
}

Prikačeni fajlovi
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: preklapanje operatora19.08.2019. u 16:59 - pre 56 meseci
Preklapanje moze da se odnosi i na override i overload, gde se preklapanje prirodnije prevodi kao override sto nije namera OP-a. Djoka je ispravno rekao overload, tj preopterecenje.
 
Odgovor na temu

IvaVuk
Beograd, Srbija

Član broj: 340767
Poruke: 2
*.dynamic.sbb.rs.



Profil

icon Re: preklapanje operatora19.08.2019. u 17:48 - pre 56 meseci
ma sve kristalno jasno. Stvarno, ne znam sta bih radila da nisam vas pitala. Nezamenljivi ste.
Pogotovu djoka (hm... lezi ti nadimak samo tako)
friend ostream& operator << (ostream& os, const Ljubimac& pet) {
os << "Moj ljubimac je " << pet.vrsta << " " << "po imenu " << pet.ime << "\n";
return os;
pa hvala do neba... ama sve si objasnio.
nemojte vise toliko truda da razbacujete... pa to vam ionako niko ne ceni... tako, napisite po dve tri reci... pametnom dosta.
 
Odgovor na temu

Whitewater
dummy workshop

Član broj: 339178
Poruke: 397



+137 Profil

icon Re: preklapanje operatora19.08.2019. u 18:39 - pre 56 meseci
Citat:
IvaVuk
Pogotovu djoka (hm... lezi ti nadimak samo tako)


!? :-)
I saw a USO last night.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: preklapanje operatora20.08.2019. u 08:36 - pre 56 meseci
Citat:
IvaVuk:
ma sve kristalno jasno. Stvarno, ne znam sta bih radila da nisam vas pitala. Nezamenljivi ste.
Pogotovu djoka (hm... lezi ti nadimak samo tako)
friend ostream& operator << (ostream& os, const Ljubimac& pet) {
os << "Moj ljubimac je " << pet.vrsta << " " << "po imenu " << pet.ime << "\n";
return os;
pa hvala do neba... ama sve si objasnio.
nemojte vise toliko truda da razbacujete... pa to vam ionako niko ne ceni... tako, napisite po dve tri reci... pametnom dosta.


Ma da, šta će ti operatori, to su dokoni programeri samo izmislili da bi dosađivali deci. Lepo idi na Whatsup, da ti neko uz mnogo LOL objasni bez teških klasa. Idi, molim te, kome još trebaju kompleksni brojevi ili vektori.
 
Odgovor na temu

Zurg

Član broj: 340713
Poruke: 58



+368 Profil

icon Re: preklapanje operatora20.08.2019. u 08:37 - pre 56 meseci
@IvaVuk

Đokin primer je dobar. Jesi li stvarno skapirao(la) ili je ono bila ironija?

P.S.
Na osnovu Đokine reakcije vidim da je bila ironija. Pokušaću ja da ti objasnim.

Da li ti je jasna ova funkcija?

Code:

     friend ostream& posaljiPodatkeLjubimcaNaIzlaz (ostream& os, const Ljubimac& pet) {
        os << "Moj ljubimac je " << pet.vrsta << " " << "po imenu " << pet.ime << "\n";
        return os;
    }


Funkcija vraća referencu na objekat tipa ostream, a vraća onaj objekat koji dobije kao ulazni parametar. Uzima dva parametra, izlazni tok (ostream) i objekat klase Lubimac, čije je podatke potrebno poslati na izlaz.
Ovakvu funkciju mogao bih da pozovem sa:

Code:

posaljiPodatkeLjubimcaNaIzlaz(std::cout, petunija);


Obična funkcija, osim što je prijatelj (bolji termin je kooperativna) klasi Ljubimac, pa može da pristupi i privatnim podacima. Ovo bi trebalo da je jasno.

Zar nije lepše kada overloadujemo operator, pa se funkcija više ne zove posaljiPodatkeLjubimcaNaIzlaz, već operator <<.

Code:

     friend ostream& operator << (ostream& os, const Ljubimac& pet) {
        os << "Moj ljubimac je " << pet.vrsta << " " << "po imenu " << pet.ime << "\n";
        return os;
    }


Sada mogu da prikažem podatke ljubimca na sledeći način:

Code:

   std::cout<<petunija;


Kraće je i jasnije. Zar overloadovanje operatora nije strava?

[Ovu poruku je menjao Zurg dana 20.08.2019. u 09:52 GMT+1]

[Ovu poruku je menjao Zurg dana 20.08.2019. u 09:52 GMT+1]

[Ovu poruku je menjao Zurg dana 20.08.2019. u 09:54 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: preklapanje operatora

[ Pregleda: 1563 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.