Integer Class

From WikiKantila

Jump to: navigation, search
// Class to hold and process integer data
// Written by : Sudesh Kumar Kantila
// Dated      : 13th April 2008
// Modified   : 14th April 2008


#include <iostream>
using namespace std;

namespace secs
{
	class Integer
	{
		//data member - should be declared in private scope
		private:
			int val;
		
		//member functions - provide interface - should be declared in public scope
		public:
			int get()
			{
				return val;
			}
			void set(int);
		
			//Overloaded & Inline functions
			int value()
			{
				return val;
			}
			
			void value(int v)
			{
				val=v;
			}
			
			void value(double fv)
			{
				val=int(fv);
			}
			
			//Input/Output function
			void read();
			void print();
			
			//constructor functions
			Integer()
			{
				val=0;
			}
			
			Integer(int v)
			{
				val=v;
			}
			
			Integer(double v)
			{
				val=int(v);
			}
			
			//copy constructor
			Integer(const Integer &ob)
			{
				val=ob.val;
			}
			
			//Operator overloading as member function
			Integer operator+(const Integer &ob)
			{
				Integer tmp;
				tmp.val=this->val+ob.val;
				return tmp;
			}
			
			Integer operator-(const Integer &ob)
			{
				Integer tmp;
				tmp.val=val-ob.val;
				return tmp;
			}
			
			Integer operator=(const Integer &ob)
			{
				val=ob.val;
				return *this;
			}
			
			Integer operator*(const Integer &ob)
			{
				Integer tmp;
				tmp.val=val * ob.val;
				return tmp;
			}
			
			Integer operator/(const Integer &ob)
			{
				Integer tmp;
				tmp.val=val / ob.val;
				return tmp;
			}
			
			Integer operator%(const Integer &ob)
			{
				Integer tmp;
				tmp.val=val % ob.val;
				return tmp;
			}			
			
			//Operator overloading using friend functions
			
			friend Integer operator+(const int,const Integer &);
			friend Integer operator+(const Integer &, const int);
			friend Integer operator-(const int,const Integer &);
			friend Integer operator-(const Integer &, const int);
			friend Integer operator*(const int,const Integer &);
			friend Integer operator*(const Integer &, const int);
			friend Integer operator/(const int,const Integer &);
			friend Integer operator/(const Integer &, const int);
			friend Integer operator%(const int,const Integer &);
			friend Integer operator%(const Integer &, const int);
			
			//Overloading insertion & extraction operators
			friend ostream & operator<<(ostream &, const Integer &);
			friend istream & operator>>(istream &,Integer &);
			
			//Destructor
			~Integer()
			{
				cerr<<"Destroying...\n";
			}
			
			
	};	//class body must end with semicolon
	
	void inline Integer::set(int v)
	{
		val=v;
	}
	
	void Integer::read()
	{
		cout<<"Input value : ";
		cin>>val;
	}
	void Integer::print()
	{
		cout<<"Value is : "<<val<<endl;
	}
	
	Integer operator+(const int v, const Integer &ob)
	{
		Integer tmp;
		tmp.val= v + ob.val;
		return tmp;
	}
	Integer operator+(const Integer &ob, const int v)
	{
		Integer tmp;
		tmp.val= v + ob.val;
		return tmp;
	}
	Integer operator-(const int v, const Integer &ob)
	{
		Integer tmp;
		tmp.val= v - ob.val;
		return tmp;
	}
	Integer operator-(const Integer &ob, const int v)
	{
		Integer tmp;
		tmp.val= ob.val - v;
		return tmp;
	}
	Integer operator*(const int v, const Integer &ob)
	{
		Integer tmp;
		tmp.val= v * ob.val;
		return tmp;
	}
	Integer operator*(const Integer &ob, const int v)
	{
		Integer tmp;
		tmp.val= v * ob.val;
		return tmp;
	}Integer operator/(const int v, const Integer &ob)
	{
		Integer tmp;
		tmp.val= v / ob.val;
		return tmp;
	}
	Integer operator/(const Integer &ob, const int v)
	{
		Integer tmp;
		tmp.val= ob.val / v;
		return tmp;
	}
	Integer operator%(const int v, const Integer &ob)
	{
		Integer tmp;
		tmp.val= v % ob.val;
		return tmp;
	}
	Integer operator%(const Integer &ob, const int v)
	{
		Integer tmp;
		tmp.val= ob.val % v;
		return tmp;
	}
	ostream & operator<<(ostream &out,const Integer &ob)
	{
		out<<ob.val;
		return out;
	}
	istream & operator>>(istream &in, Integer &ob)
	{
		in>>ob.val;
		return in;
	}
	
}

Go back to C++ Programs

Personal tools