Yes, even i am also thinking the same, becoz i have read many times that we need to use delete only on objects created by using 'new' operator. This is clear to me now.

So it means we should always use in this way

Base *ptr = new Derived();

if we want base class pointer to point to Derived object, am i correct ?