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)