/* Koen Noens * oefeningen blz 278 * * 10.5 1-2-3-4 * operator overloading met void functie of pointer *this */ #include class Voorraad { private: int klein; int groot; public: Voorraad(int k = 0, int g = 0) {//constructor klein = k; groot = g; } Voorraad operator+(Voorraad V) { return Voorraad(klein+V.klein, groot+V.groot); }; Voorraad & operator+=(Voorraad V) { klein += V.klein; groot += V.groot; return *this; // return het object waarmee deze functie aangeroepen is } Voorraad operator*(const double a) { klein = int(a*klein); groot = int(a*groot); return *this; }; Voorraad operator-(Voorraad V) { // binaire -, analoog aan + return Voorraad(klein-V.klein, groot-V.groot); } Voorraad operator-() { // unaire -, zonder argument return Voorraad(-klein, -groot); } void print() const //const lid functie, zie p.255, //om te vermijden dat de functie //het object waarmee de functie aangeroepen wordt, niet wijzigt { cout << klein << " klein, " << groot << " groot." << endl; } }; void main() { //declaratie, en initialisatie door constructor Voorraad V1(1,2), V2(10,20), V3(100,200), Vtotaal; cout << " dit is resultaat van overloaded +" << endl; Vtotaal = V1 + V2 + V3; cout << "dit is resultaat van overloaded +=, zie vorige oef" << endl; (V1 += V2) += V3; V1.print(); // 4. nog meer overloaded functies Voorraad A(5,10), B(15,20), C(20,30); cout << endl << endl << "dit is binaire - : totaal = B - A = 10,10" << endl; Vtotaal = B - A; Vtotaal.print(); cout << endl << endl << "dit is unaire - : A wordt -B" << endl; A.print(); B.print(); A= -A; A.print(); // A terugzetten A= -A; cout << endl << endl << "vermenigvuldig D * 1.5 = 15,30" << endl; Voorraad D(10,20); C= D*1.5; C.print(); cout << endl << endl << "vermenigvuldig 1.5 * C " << endl; /* dit geeft een fout om gewone * geen 'voorraad' neemt, en 1.5 geen obkect is dat de functie (overloaded) * kent A= 1.5 * B; C.print(); */ }