the book im reading has an exercise to make a class Int and overload the basic operators. there is 2 things i dont understand. it asks for bounds checking, but i dont know why the answer in the back of the book needs to convert it to long double. the other thing i dont get is 'operator int()'. when does this come in play in the class? its a conversion from Int to type int, i know that much. but when is this operator called. thanks in advance for responses :)
Code://////////////////////////class Int/////////////////////////
class Int
{
private:
int i;
public:
Int(): i(0) //set default value (constructor)
{ }
Int(int integer): i(integer) //1-arg constructor
{ }
void put_int() //display int
{ cout << i << endl; }
void get_int() //get int
{ cin >> i; }
operator int() //conversion operator from Int to int
{ return i; }
Int operator + (Int i2)
{ return limit_check(long double(i) + long double(i2)); }
Int operator - (Int i2)
{ return limit_check(long double(i) - long double(i2)); }
Int operator * (Int i2)
{ return limit_check(long double(i) * long double(i2)); }
Int operator / (Int i2)
{ return limit_check(long double(i) / long double(i2)); }
Int limit_check(long double num)
{
if(num > 2147482648.0L || num < -2147482648.0L)
{
cout << "\nOverflow error: Exiting." << endl;
exit(1);
}
return Int(int(num));
}
};
/////////////////////////////////////////////////////////////