The purpose of an abstract class is not to let the developers create an object of the base class and then **upcast** it, AFAIK.

Now, even if the upcasting is not required, and I still use it, does it prove to be **"disadvantageous"** in some way?

More clarification:  

From The Thinking in C++:

> 
> Often in a design, you want the base class to present only an
>  interface for its derived classes. That is, you don’t want anyone to
>  actually create an object of the base class, only to upcast to it so that
>  its interface can be used. This is accomplished by making that class
>  abstract, 
> 
> 
> 

By upcasting, I meant: `baseClass *obj = new derived ();`