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

Operator Overloading..

[es] :: C/C++ programiranje :: Operator Overloading..

[ Pregleda: 2999 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Operator Overloading..05.10.2002. u 06:26 - pre 261 meseci
Zanima me kada se upotrebljava najvise i kako ga je najbolje upotrebljavati.
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.beg.sezampro.yu



+27 Profil

icon Re: Operator Overloading..05.10.2002. u 08:10 - pre 261 meseci
Upotrebljavaš ga uvek kad je to logično.

Na primer, napravio si klasu matrica i hoćeš ovakav kod:

Code:
[blue]...
matrix a, b, c;
...
c = a * b; [/blue]// matrično pomnožiti matrice a i b i rezultat staviti u matricu c[blue]
...[/blue]

Pri tome sam definišeš operatore = i *.

Pošto nisi ograničen u definisanju operatora (možeš da definišeš bilo koji operator kako ti volja), treba paziti da se operatori definišu tako da rade ono što bi se od njih i očekivalo. Ovo nije tako jednostavno kao što možda izgleda, tako da je najbolje da pročitaš negde preporuke za definisanje operatora.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: Operator Overloading..05.10.2002. u 08:49 - pre 261 meseci
Evo bas sad citam neku knjigu, i nasao sam na internetu neku literaturu, nije bas zeznuto. Najgore je prvi put uraditi nesto tako. Npr. Imam profesora koji nam je zadao labaratoriju i dao nam da uradimo ovo. E sad nisam bio siguran kako da uradim, evo sta sam napisao, nisam siguran da li je tacno pa bih molio pomoc ukoliko sam zeznuo. Recimo ovaj output..

Code:


ostream& operator <<(ostream& outs, const String& source) // STUB!
{
    int i=0;
    while(source[ i ]!= '\n' )  
    {    
        outs << source[ i ];
        i++;
        
    }
    return outs;
}


 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.beg.sezampro.yu



+27 Profil

icon Re: Operator Overloading..05.10.2002. u 11:56 - pre 261 meseci
Ne znam šta ti je tačno String (klasa? makro za char*?), čudno mi je da se završava sa '\n'. Ali, ako je to kako treba, onda je sve u redu.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: Operator Overloading..07.10.2002. u 08:53 - pre 261 meseci
Ma to je neki program sto pretvara string u karakter itd itd...

Hvala sve u svemu, mada u programu jos uvijek imam error, ne znam sta je...postovao bih ga ovdje ali je velik fajl. Ne daje mi error kad ga debuggujem, nego kad se pokrene onda mi daje error, kad probam da ga testiram
 
Odgovor na temu

Jovan Marjanovic
HP GmbH
Stuttgart

Član broj: 942
Poruke: 456
*.net.external.hp.com

ICQ: 42
Sajt: www.hp.com


Profil

icon Re: Operator Overloading..07.10.2002. u 14:12 - pre 261 meseci
Citat:
Časlav Ilić:
Ne znam šta ti je tačno String (klasa? makro za char*?), čudno mi je da se završava sa '\n'. Ali, ako je to kako treba, onda je sve u redu.


Jel ti to ozbiljno pitas sta je String u C++ ?!?!?
Za automatsko dobijanje Super Moderatorskog statusa na Elitesecurity forumima pritisnite Alt+F4
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Operator Overloading..07.10.2002. u 16:07 - pre 261 meseci
String (veliko "S") ne postoji u standardnom C++u i pitanje je na svom mestu. Verovatno je u pitanju neka klasa koju su razvili studenti u okviru svojih vežbi.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: Operator Overloading..07.10.2002. u 18:27 - pre 261 meseci
U pravu si Dragi Tata, u pitanju je klasa :)

Code:


class String

    {

    public:

        // CONSTRUCTORS and DESTRUCTOR
        String(const char str[ ] = "");
        String(const String& source);// copy constructor
        ~String( );
        // MODIFICATION MEMBER FUNCTIONS
        void operator +=(const String& addend);
        void operator +=(const char addend[ ]);
        void operator +=(const char addend);
        void resize(size_t n);
        void operator =(const String& source);
        // CONSTANT MEMBER FUNCTIONS
        char* getSequence () const { return sequence; }
        size_t length() const { return current_length; }
        char operator [ ](size_t position) const;
        // FRIEND FUNCTIONS
        friend ostream& operator <<(ostream& outs, const String& source);
        friend bool operator ==(const String& s1, const String& s2);
        friend bool operator !=(const String& s1, const String& s2);
        friend bool operator >=(const String& s1, const String& s2);
        friend bool operator <=(const String& s1, const String& s2);
        friend bool operator > (const String& s1, const String& s2);
        friend bool operator < (const String& s1, const String& s2);

    private:

        char *sequence;
        size_t allocated;
        size_t current_length;

    };

 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: Operator Overloading..17.10.2002. u 08:42 - pre 261 meseci
A ovako mi treba jedan odgovor, jednostavan je samo da mi neko malko pojasni.

Recimo imam tacku na x, y osi i sad hocu da povecam ili kako se to vec kaze na srpskom (increment) x i y, ali nakon sto je sve oradjeno, da vam napisem na engleskom treba da uradim (post increment), i naravno sve je ovo vezano za operator overloading, koji mi bas nije nesto od ruke za sad. E sad, profesor nam je dao ovako nesto da zapamtimo.

Code:

Point Point::operator ++(int)
{
    Point temp;
    temp.x = x;
    temp.y = y;
    x++;
    y++;
    return temp;
}



E sad ja to kontam i razumijem, ali mi nije jasno sto nije napisao nesto ovako.

Code:

Point &Point::operator ++()
{
    x++;
    y++;
    return *this;
}


Da li je tako nepravilno, ili ima neka caka, sto nije on krace tako napisao???
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Operator Overloading..17.10.2002. u 16:11 - pre 261 meseci
Nije caka, nego su to dva različita operatora. Onaj prvi je post-increment (pt++), a ovaj "kraći" je pre-increment (++pt).
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.cisit.calumet.purdue.edu



+2 Profil

icon Re: Operator Overloading..17.10.2002. u 19:14 - pre 261 meseci
Sacekaj zar pre increment ne bi trtebao da bude nesto kao

++x, i ++y ???
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Operator Overloading..17.10.2002. u 19:30 - pre 261 meseci
Jeste. Pre increment je ++x; a post increment x++;

U čemu je nedoumica?
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: Operator Overloading..18.10.2002. u 08:27 - pre 261 meseci
Pa pogledaj ove dve verzije overloading post incrementa...obadve su post increment. Samo me interesuje koja je pravilnija i zasto, i da li je greska ovako kako sam ja napisao i kako je profesor napisao?

Ove obadve rade overloading post increment. E sad prvi primer je njegov, a drugi kraci je moj, moje pitanje je bilo da li je moj primer tacan, ili moram da napravim temporarni fajl i onaj sav proces da prodjem da bi overloadovao taj post increment.???
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Operator Overloading..18.10.2002. u 16:01 - pre 261 meseci
Kao što rekoh, tvoj primer nije post-increment, već pre-increment. Profesorov primer je post-increment.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Operator Overloading..

[ Pregleda: 2999 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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