Operators = virkjar.
Grunnvirkjarnir í C++ eru +, -, *, /, = og ==.
Einfalt mál er að nota þessa virkja þegar við vinnum með gagnatög (data types) sem C++ þekkir, t.d. int, long. Ef við ætlum að bera saman tvær tölur af taginu int, er það einfalt mál…
int i=5; int j=6;
if (i == j)
do_whatever;
else
do_whatever2;

Ef við hins vegar skilgreinum okkar eigin klasa (class) eða eigið gagnatag (abstract data types) og ætlum að nota áðurnefnda virkja (+, -, *, /, = og ==) þá vandast málið því C++ hefur enga leið til að vita hvað við ætlum að gera, þó svo að okkur fynnist það frekar augljóst.
Dæmi:
Við skilgreinum gagnatagið…
class money
{
int kronur;
};

Við myndum síðan segja eitthvað á þessa leið í forritinu okkar…
money m1;
money m2;
m1.kronur = 10;
m2.kronur = 10;
if (m1 == m2) //Þýðingarvilla !!!
do_whatever;
else
do_whatever2;

Hérna kæmi upp villa, því C++ kannast ekki við gagnatagið og getur því ekki borið þessi tvo atriði saman.
Leiðin sem C++ gefur okkur er að við getum skilgreint þessa virkja uppá nýtt fyrir klasana okkar. Þetta kallast “operator overloading”.
Þar sem við höfum í dæmunum hingað til notað == (samanburðarvirki á ísl.) skulum við útfæra fyrir klasann “money”.
Í .h skránni setjum við
class money
{
public:
int kronur;
friend bool operator == (money &m1, money &m2);
};

Í .cpp skránni
bool operator == (money &m1, money &m2)
{
if (m1.kronur == m2.kronur)
return true;
else
return false;
}

Í línunni “if (m1.kronur == m2.kronur)” er C++ að bera saman gagnatög sem það þekkir, þ.e. kronur er af taginu int.
Þegar við “overloadum” == er skilagildið haft bool. ”Friend” er nauðsynlegt í þessu tilfelli en það má hinsvegar sleppa “friend”, en þá lítur útfærslan öðruvísi út. Ég mæli eindregið með notkun á “friend”
með kveðju…