Define a class Deque_double that represents a deque of doubles by keeping its elements in a dynamically allocated array (with maximum capacity) and make the deque as a "circular array" (the first element follows the last one).
Supply the "big three" memory management functions. Use this class to demonstrate
(a) the difference between initialization
Deque_double s;
Deque_double t = s;
and assignment operation
Deque_double s;
Deque_double 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 member functions size, push_front and push_back. Overload the -- unary prefix operator (--d) for pop_front operation and -- postfix operator (d--) for pop_back operation. Overload the stream operators << and >> for output and input deque objects. Demonstrate all these functions and operators.
And what is your question exactly? What code have you made?
Implementing something like a copy constructor doesn't sound hard, you just have to allocate new memory and copy over your Deque to it. The destructor should just have to delete the Deque. Size, push_front and push_back sound like standard stack stuff. Overloading the operators sounds like it might get tricky however...