E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Objektno programiranje > Prekrivanje operatorjev

Prijava

Prekrivanje operatorjev (operator overloading)

 

Določene operatorje želimo prekriti. Npr. operacije + nimamo definirane za kompleksna števila.

 

class Kompleksno {

public
:

Kompleksno(double = 0.0, double = 0.0);

// prekrivanje operatorja za setevanje


Kompleksno operator+(const Kompleksno &) const;

// prekrivanje operatorja za odstevanje


Kompleksno operator-(const Kompleksno &) const;

// prekrivanje operatorja za prirejanje


Kompleksno &operator=(const Kompleksno &);

void
izpisi() const;


private
:

double
realni; // realni del

double
imaginarni; // imaginarni del


};






// konstruktor

Kompleksno::Kompleksno(double r, double i)

{


realni = r;

imaginarni = i;

}



// Prekrivni operator sestevanja

Kompleksno Kompleksno::operator+(const Kompleksno &operand2) const

{


Kompleksno vsota;

vsota.realni = realni + operand2.realni;

vsota.imaginarni = imaginarni + operand2.imaginarni;

return
vsota;

}




// Prekrivni operator odstevanja

Kompleksno Kompleksno::operator-(const Kompleksno &operand2) const

{


Kompleksno razlika;

razlika.realni = realni - operand2.realni;

razlika.imaginarni = imaginarni – operand2.imaginarni;

return
razlika;

}




// Prekrivni operator =

Kompleksno& Kompleksno::operator=(const Kompleksno &desno)

{


realni = desno.realni;

imaginarni = desno.imaginarni;

return
*this; // omogoca veckratno prirejanje

}




// Prikazi objekt Kompleksno v obliki: (a, b)

void
Kompleksno::izpisi() const

{

cout << '(' << realni << ", " << imaginarni << ')';

}

 

 

Glavna funkcija

 

main()

{


Kompleksno x, y(4.3, 8.2), z(3.3, 1.1);

cout << "x: ";

x.izpisi();

cout << endl << "y: ";

y.izpisi();

cout << endl << "z: ";

z.izpisi();

x = y + z;

cout << endl << endl << "x = y + z:" << endl;

x.izpisi();

cout << " = ";

y.izpisi();

cout << " + ";

z.izpisi();


x = y - z;

cout << endl << endl << "x = y - z:" << endl;

x.izpisi();

cout << " = ";

y.izpisi();

cout << " - ";

z.izpisi();

cout << endl;

return
0;

}



 

Program izpiše:

x: (0, 0)

y: (4.3, 8.2)

z: (3.3, 1.1)

 

x = y + z:

(7.6, 9.3) = (4.3, 8.2) + (3.3, 1.1)

 

x = y - z:

(1, 7.1) = (4.3, 8.2) - (3.3, 1.1)