Define a class Cubic that stores the coefficients of a polynomial of degree 3 in a dynamically allocated array of doubles. Supply the "big three" memory management functions. Use this class to demonstrate (a) the difference between initialization Cubic s; Cubic t = s; and assignment operation Cubic s; Cubic t; s = t; (b) the fact that all constructed objects are automatically destroyed (c) the fact that the copy constructor is invoked if an object is passed by value to a function (d) the fact that the copy constructor is not invoked when a parameter is passed by reference (e) the fact that the copy constructor is used to copy a return value to the caller. Supply a member function which calculates the value of the polynomial for a given argument value. Overload + and - operators for addition and subtraction of two polynomials and the unary operator * which return true or false when the corresponding cubic function has or has not critical points. (We say that a function f(x) has a critical point z when its derivative has value null at this point, i.e. f '(z) = 0.) Overload the stream operators << and >>. Demonstrate all these functions and operators. |