[ mafija75 @ 29.08.2002. 09:26 ] @
Zdravo!
Imam knjigu "Naucite C++ za 21 dan".Stigao sam do dela preklapanje operatora i nije mi bas sve jasno u vezi toga.Da li bi mogli da mi date neke primere preklapanja operatora i objasnjenje.I jedno pitanje.Zasto se vrsi preklapanje operatora(operator++,operator+,operator-,operator= itd)?
Hvala
[ Dejan Lozanovic @ 29.08.2002. 15:20 ] @
Pa vidi, recimo pravis svoj neki tip podataka, recimo matematicki vektor, i sada da ne pises pises funkciju koja se zove saberiDvaVektora, vec preklopis operator +.

A kada smo kod preklapanja operatora =. Njega si obavezan da napises ukoliko tvoja klasa dinamicki alocira neku memoriju. jer ce predefinisani operator pokazivati na iistu alociranu memoriju. A kada smo kod toga upamti: copy konstruktor, operator dodele, i destruktor uvek idu u paru tako da ukoliko ce ti trebati jedan da ga napises zasebno sigurno ce ti trebati i druga dva.
[ mafija75 @ 29.08.2002. 15:33 ] @
Mozes li da mi posaljes neki lagan primer kako bih to skontao.Nije mi bas jasna implementacija u okviru neke klase.Zasto se na primer pise Counter& Counter::operator++ () ili Counter Counter :: Add (const Counter & rhs)?Ovo su primeri iz knjige "naucite C++ za 21 dan"
[ leka @ 29.08.2002. 16:10 ] @
Huh, o tome garantovano imas u toj (ili nekoj drugoj knjizi za pocetnike), svejedno evo ti sors:

/**
* Veoma prosta klasa za rad sa vektorima
* KLasa za sada moze samo da sabira dvodimenzionalne vektore...
*/
#include <iostream.h>
using namespace std;

// Sve svoje klase pocinjem sa K (K kao "klasa")
class KVector {
public:
int x,y;
KVector () {};
KVector (int,int);
KVector operator + (KVector);
};

KVector::KVector (int a, int b) {
x = a;
y = b;
}

/**
* OVDE preopterecujemo operator "+" da bi
* pomocu njega mogli da sabiramo vektore
*/
KVector KVector::operator+ (KVector param) {
KVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return (temp);
}

int main () {
char cKey;

KVector a (3,1);
KVector b (1,2);
KVector c;
c = a + b;
cout << c.x << "," << c.y;

cout << "\nPritisni nekit taster i nakon toga enter" << endl;
cin >> cKey;
return 0;
}

Dev-C++ projekat ti je "prilepljen uz poruku tako da ti predlazem da samo to "skines" i naucis.