Data Structure C++

#include 
#include 
#include 
using namespace std;
class myclass {
  int a, b;
  int sum;
public:
  myclass() { a = b = 0; }
  myclass(int i, int j) {
    a = i;
    b = j;
    sum = a + b;
  }
  int getsum() { return sum; }
  friend bool operator<(const myclass &object1,
                        const myclass &object2);
  friend bool operator>(const myclass &object1,
                        const myclass &object2);
  friend bool operator==(const myclass &object1,
                        const myclass &object2);
  friend bool operator!=(const myclass &object1,
                        const myclass &object2);
};
bool operator<(const myclass &object1, const myclass &object2)
{
  return object1.sum < object2.sum;
}
bool operator>(const myclass &object1, const myclass &object2)
{
  return object1.sum > object2.sum;
}
bool operator==(const myclass &object1, const myclass &object2)
{
  return object1.sum == object2.sum;
}
bool operator!=(const myclass &object1, const myclass &object2)
{
  return object1.sum != object2.sum;
}
int main()
{
  int i;
  // create first list
  list listObject1;
  for(i=0; i<10; i++) listObject1.push_back(myclass(i, i));
  cout << "First list: ";
  list::iterator p = listObject1.begin();
  while(p != listObject1.end()) {
    cout << p->getsum() << " ";
    p++;
  }
  cout << endl;
  // create a second list
  list listObject2;
  for(i=0; i<10; i++) listObject2.push_back(myclass(i*2, i*3));
  cout << "Second list: ";
  p = listObject2.begin();
  while(p != listObject2.end()) {
    cout << p->getsum() << " ";
    p++;
  }
  cout << endl;
  // now, merget listObject1 and listObject2
  listObject1.merge(listObject2);
  // display merged list
  cout << "Merged list: ";
  p = listObject1.begin();
  while(p != listObject1.end()) {
    cout << p->getsum() << " ";
    p++;
  }
  return 0;
}