Exercise 4
About | Files | Solutions |
---|---|---|
Operator overloading, inheritance. | exercise4.tar.gz | sol-exercise4.tar.gz |
- Write a class
Rational
that describes rational numbers, i.e., numbers like 22/3 or –5/6. All numbers should be in their simplest forms, e.g., 1/2 instead of 2/4 or 3/6. Implement constructs so the program in testrational.cc works correctly, (To convert a number to its simplest form, you must compute the greatest common divisor of the numerator and the denominator. The classical GCD algorithm is Euclid's algorithm, but there are faster algorithms that don't use division. See, for example, Binary GCD.) - In shapetest.cc three objects
aShape
,aSqua
, andaCircle
are created, and theprint()
function is used to check the identity (type) of each object. Everything seems to work correctly, but when object types are checked in another way the results are wrong. Explain the results and correct the classes so both checks produce the same results. - In shapevectortest.cc we assume that we have fixed the error from assignment 2. We now store a mix of
Square
andCircle
objects in a vector. The results are wrong -- the objects seem to lose their type again. Explain why this happens and fix the error, - Study the program
const.cc
and make sure you understand what happens in each function call. In
particular, what are the types of the objects, and what are the types of the references?
Then uncomment the commented out call and make sure you understand the error message.