I wrote two classes like this:
class Shape
{
//...
virtual Shape& clone(const Shape&) = 0;
};

class Rectangle : Shape
{
//...
virtual Rectangle& clone(const Rectangle& rectangle)
{
Rectangle *r = new Rectangle(...);
return *r;
}
};
and then I have some questions:
1> Rectangle why...