Integer Class
From WikiKantila
// 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

