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