Papers/programming

Downcasting: C++ vs. Java

tomato13 2013. 12. 2. 11:31

In case of C++


class CParent

{

public:

    void mPrintf2()

    {

        printf("CParent::mPrintf2\n");

    }


};


class CChild : public CParent

{

public:

    void mPrintf2()

    {

        printf("CChild::mPrintf2\n");

    }

};


int main(void)

{

    CParent* l_pObj = new CChild();

    l_pObj->mPrintf2();

}


=> 


CParent::mPrintf2


If you attach 'virtual' keyword ahead of the mPrintf2 declaration

The result is


=>


CChild::mPrintf2



In case of Java


class CParent

{

void mPrint()

{

System.out.println("CParent::mPrint");

}

};


class CChild extends CParent

{

void mPrint()

{

System.out.println("CChild::mPrint");

}

};



public class CTest {


public static void main(String[] args)

{

CParent l_obj = new CChild();

l_obj.mPrint();

}

}


=>


CChild::mPrint