//------------------------------------------------------------ // Program to show rudimentary class declaration and // operator overloading // L.Aamodt // 4/16/14 //------------------------------------------------------------ #include using namespace std; class Fraction // Class definition { public: Fraction(); // Default constructor Fraction(int num, int den); // Explicit-Value constructor friend Fraction operator *(const Fraction& fract1, const Fraction& fract2); int Numerator(void); // Accessors int Denominator(void); void setNumerator(int num); // Mutators (i.e. set values) void setDenominator(int denom); void print(void); // Output private: int numerator; // Data int denominator; }; Fraction::Fraction() // Default constructor { numerator = 1; denominator = 1; } Fraction::Fraction(int num, int den) // Explicit-Value constructor { numerator = num; denominator = den; } int Fraction::Numerator(void) // Get the numberator value { return numerator; } int Fraction::Denominator(void) // Get the denominator value { return denominator; } void Fraction::setNumerator(int num) // Modify the numberator { numerator = num; } void Fraction::setDenominator(int denom) // Modify the denominator { denominator = denom; } void Fraction::print(void) // Display values { cout <<"The value of the fraction is " << numerator << '/' << denominator << '\n'; } Fraction operator *(const Fraction& fract1, const Fraction& fract2) { Fraction temp; temp.numerator = fract1.numerator * fract2.numerator; temp.denominator = fract1.denominator * fract2.denominator; return temp; } int main() { Fraction a(2,2), b(3,3), c; // Declare three fraction objects c = a * b; // multiply objects a and b c.print(); return 0; }