Posts Tagged ‘==’

operator – comparisons

Wednesday, February 24th, 2010

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 <iostream>
 
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