Constructors and Destructors - Programming

Q1:

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

A Base OK. Derived OK. Derived DEL.

B Base OK. Base OK. Derived OK. Derived DEL.

C Base OK. Derived OK. Derived DEL. Derived DEL.

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

E The program will report compile time error.

ANS:D - Base OK. Base OK. Derived OK. Derived DEL. Derived DEL.

In oops,when a constructor of derived class is called compiler automatically invokes base class's default constructor (However in java we can use super(a,b) to specify parameterized constructor).

Therefore the virtually the definition of derived class constructor becomes:

AptitudeDerived()
{
AptitudeBase();//Line added By Compiler internally
cout<< "Derived OK. ";
}