Constructors and Destructors - Programming

Q1:

What will be the output of the following program?
#include<iostream.h>
class AptitudeBase
{   
    public:
    AptitudeBase()
    {
        cout<< 'Base OK. '; 
    }
    virtual ~AptitudeBase()
    {
        cout<< 'Base DEL. '; 
    }
};
class AptitudeDerived: public AptitudeBase
{
    public:
    AptitudeDerived()
    { 
        cout<< 'Derived OK. '; 
    }
    ~AptitudeDerived()
    { 
        cout<< 'Derived DEL. '; 
    }
};
int main()
{
    AptitudeBase *basePtr = new AptitudeDerived();
    delete basePtr;
    return 0;
}

A Base OK. Derived OK.

B Base OK. Derived OK. Base DEL.

C Base OK. Derived OK. Derived DEL.

D Base OK. Derived OK. Derived DEL. Base DEL.

E Base OK. Derived OK. Base DEL. Derived DEL.