#include    <iostream>
class A
{
    private:
        char data;
    public:
        A(){data = 'A';};
        virtual void Show()
        {
            std::cout << data << std::endl;
        };
        virtual void Display()
        {
            std::cout << 'A' << std::endl;
        }
};
class B
{
    private:
        char data;
    public:
        B(){data = 'B';};
        virtual void Show()
        {
            std::cout << data << std::endl;
        };
        virtual void Display()
        {
            std::cout << 'B' << std::endl;
        }
};
class C
{
    private:
        char data;
    public:
        C(){data = 'C';};
        void Print()
        {
            std::cout << "this is class C printing" << std::endl;
        };
};
class D: public A, public B, public C
{
    private:
        char data;
    public:
        D(){data = 'D';};
        virtual void Show()
        {
            std::cout << data << std::endl;
        };
        virtual void Display()
        {
            std::cout << 'D' << std::endl;
        };
};
    int
main ( int argc, char *argv[] )
{
    D *d = new D;
    A *a = (A*)d;
    B *b = (B*)d;
    d->Show();
    d->Print();
    a->Show();
    b->Show();
    d->Display();
    a->Display();
    b->Display();
        
    return 0;
}                /* ----------  end of function main  ---------- */