Operator overloading

redefine operators for specific classes

main.cpp
// Project_11-02
// Name: Aliens

#include <iostream>
#include "Alien.h"

using namespace std;

int main() {

	cout << "/---------------------------------------------------\\" << endl;
	cout << "|                      Aliens                       |" << endl;
	cout << "|         =================================         |" << endl;
	cout << "| Course:     The Complete C++ Developer Course     |" << endl;
	cout << "| Instructor: John P. Baugh, Ph.D.                  |" << endl;
	cout << "| Student:    Patrick Kox                           |" << endl;
	cout << "\\---------------------------------------------------/" << endl << endl;

	Alien alien1(185, 94, 'F');
	Alien alien2(176,97, 'M' );
	Alien alien7 = alien1 + alien2;

	cout << boolalpha;
	cout << "alien1 == alien2 : " << (alien1 == alien2)  << endl;
	cout << "alien1 != alien2 : " << (alien1 != alien2)  << endl << endl;

	cout << "alien1 < alien2 : " << (alien1 < alien2) << endl;
	cout << "alien1 > alien2 : " << (alien1 > alien2) <<  endl;
	cout << "alien1 <= alien2 : " << (alien1 <= alien2) << endl;
	cout << "alien1 >= alien2 : " << (alien1 >= alien2) << endl;

	Alien alien3 = alien1 + alien2;
	Alien alien4 = alien3 + alien2;
	Alien alien5 = alien3 + alien4;

	Alien alien6 = alien4;

	cout << endl << endl;

	cout << "Alien1 and Alien2's children:" << endl;
	cout << "Alien3: height :" << alien3.getHeight() << " weight :" << alien3.getWeight() << " gender :" << alien3.getGender()<< " prestige :" << alien3.getPrestige() << endl;
	cout << "Alien4: height :" << alien4.getHeight() << " weight :" << alien4.getWeight() << " gender :" << alien4.getGender() << " prestige :" << alien4.getPrestige() << endl;
	cout << "Alien5: height :" << alien5.getHeight() << " weight :" << alien5.getWeight() << " gender :" << alien5.getGender() << " prestige :" << alien5.getPrestige() << endl;

	cout << endl << endl;

	cout << "Alien6 = alien4" << endl;
	cout << "Alien6: height " << alien6.getHeight() << " weight " << alien6.getWeight() << " gender " << alien6.getGender(  ) << endl; 

	cout << "Alien5: height :" << alien7.getHeight() << " weight :" << alien7.getWeight() << " gender :" << alien7.getGender() << " prestige :" << alien7.getPrestige() << endl; 

	cout << endl << endl;
	cout << "Aliens prestige system: " << endl;
	cout << "Alien1 : " << alien1.getPrestige() << endl;
	cout << "Alien2 : " << alien2.getPrestige() << endl;
	cout << "Alien3 : " << alien3.getPrestige() << endl; 
	cout << "Alien4 : " << alien4.getPrestige() << endl; 
	cout << "Alien5 : " << alien5.getPrestige() << endl;
	cout << "Alien6 : " << alien6.getPrestige() << endl;

	cout << endl;

    return 0;
}
Alien.h
#ifndef ALIEN_H
#define ALIEN_H

using namespace std;

class Alien
{
	public:
		// constructor
		Alien(int weight, int height, char gender);
		
		// getters
		int getWeight() const;
		int getHeight() const;
		char getGender() const;
		int getPrestige() const;
		
		// Operator Overloads
		bool operator==(Alien& other);
		bool operator!=(Alien& other);
		bool operator>(Alien& other);
		bool operator>=(Alien& other);
		bool operator<(Alien& other);
		bool operator<=(Alien& other);
		
		Alien operator+(Alien& other);
		Alien operator=(Alien& other);
		
	private:
		int weight;
		int height;
		char gender;

};


#endif
Alien.cpp
#include "Alien.h"
#include <ctime>
#include <cstdlib>
#include <iostream>

using namespace std;

Alien::Alien(int weight, int height, char gender)
{
	this->weight = weight;
	this->height = height;
	this->gender = gender;
}
		
		// getters
int Alien::getWeight() const
{
	return weight;
}

int Alien::getHeight() const
{
	return height;
}

char Alien::getGender() const
{
	return gender;
}

int Alien::getPrestige() const
{
	int prestige = (height * weight);
	if (gender == 'M' || gender == 'm') {
		prestige *= 2;
	}
	if (gender == 'F' || gender == 'f') {
		prestige *= 3;
	}
	return prestige;
}

		
// Operator Overloads
bool Alien::operator==(Alien& other)
{
	return getPrestige() == other.getPrestige();
}
bool Alien::operator!=(Alien& other)
{
	return getPrestige() != other.getPrestige(); 
}

bool Alien::operator>(Alien& other)
{
	return getPrestige() > other.getPrestige(); 
}

bool Alien::operator>=(Alien& other)
{
	return getPrestige() >= other.getPrestige(); 
}

bool Alien::operator<(Alien& other)
{
	return getPrestige() < other.getPrestige(); 
}

bool Alien::operator<=(Alien& other)
{
	return getPrestige() <= other.getPrestige(); 
}
		
Alien Alien::operator+(Alien& other)
{
	
	int tempHeight = (height + other.height) / 2;
	int tempWeight = (weight + other.weight) / 2;
	char tempGender;

	srand(time(nullptr));                   // for random number generator
	int randomGender = rand() % 10 + 1;	// 1, 3 and 7 are Female, others are male.
	if (randomGender == 1 || randomGender == 3 || randomGender == 7) {
		tempGender = 'F';
	}
	else {
		tempGender = 'M';
	}
	return Alien(tempWeight, tempHeight, tempGender);
}
Alien Alien::operator = (Alien& other)
{
	Alien tempAlien(other.height, other.weight, other.gender);
	return tempAlien;
}