[ 01011011 @ 05.10.2002. 06:26 ] @
Zanima me kada se upotrebljava najvise i kako ga je najbolje upotrebljavati.
[ Časlav Ilić @ 05.10.2002. 08:10 ] @
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.
[ 01011011 @ 05.10.2002. 08:49 ] @
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;
}


[ Časlav Ilić @ 05.10.2002. 11:56 ] @
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.
[ 01011011 @ 07.10.2002. 08:53 ] @
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
[ Jovan Marjanovic @ 07.10.2002. 14:12 ] @
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++ ?!?!?
[ Dragi Tata @ 07.10.2002. 16:07 ] @
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.
[ 01011011 @ 07.10.2002. 18:27 ] @
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;

    };

[ 01011011 @ 17.10.2002. 08:42 ] @
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???
[ Dragi Tata @ 17.10.2002. 16:11 ] @
Nije caka, nego su to dva različita operatora. Onaj prvi je post-increment (pt++), a ovaj "kraći" je pre-increment (++pt).
[ 01011011 @ 17.10.2002. 19:14 ] @
Sacekaj zar pre increment ne bi trtebao da bude nesto kao

++x, i ++y ???
[ Dragi Tata @ 17.10.2002. 19:30 ] @
Jeste. Pre increment je ++x; a post increment x++;

U čemu je nedoumica?
[ 01011011 @ 18.10.2002. 08:27 ] @
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.???
[ Dragi Tata @ 18.10.2002. 16:01 ] @
Kao što rekoh, tvoj primer nije post-increment, već pre-increment. Profesorov primer je post-increment.