Comparisons between classes are different compared to local variables e.g. int(eger), float, doubles.. because the comparisons aspects of the standard variables have already been done e.g.
int a=2;
int b =3;
if (a==b)....
the comparison being the “==”, within your own classes if you want to test against a another object that is of the same class you will have to write a comparison function that will either return true or false, of course there are other comparisons <,>, <=, >= etc and also +,- which can be implemented if you wanted to.
The basics of the comparison operator is
bool operator == (const yourclassname &tester)
where yourclassname is what you have called your class, of course you can run comparisons with other classes and also standard variables like floats, but you will need to write a separate one for each. The operator is the keyword, and it returns a bool(ean) result which is either true/false, so once you have done a comparison within this function you just return either true or false and the code below will still compile
classA a;
classA b;
if (a==b) ..
below is code that you can compile to demonstrate operator keyword abit more.
#include
using namespace std;
class classA
{
public :
int x;
// of course you cannot alter the testing class so const
// the tester is the right hand side of the boolean test e.g.
// if (A == B ) . A = this class and B = tester
bool operator == (const classA &tester)
{
if (x == tester.x)
return true;
else
return false;
};
};
int main()
{
classA a;
classA b;
a.x = 0;
b.x = 0;
if (a==b)
cout << "the same" << endl;
else
cout << "not the same" << endl;
b.x = 1;
if (a==b)
cout << "the same" << endl;
else
cout << "not the same" << endl;
return 0;
}
and the output would be
the same
not the same