在执行一个父类的函数体时如何确定这个指针的子类类型呢

在执行一个父类的函数体时怎么确定这个指针的子类类型呢 ?
比如
class CBase
{
virtual void FuncBase(){...}
}

class CApple:CBase
{
virtual void FuncApple(){...}
}

class CBanana:CBase
{
virtual void FuncBanana(){...}
}

这段代码在内存中分布(C函数形式的分布):
0x00000001(第一段内存):CBase@FuncBase ...
0x00000002(第二段内存): CApple@FuncApple ...
0x00000003(第三段内存): CBanana@FuncBanana ...

现在有一个CBase *pObj ,当然他是CBase,但也是CApple或者CBanana的一种,那么在CBase@FuncBase这个上下文环境中,
void FuncBase(CBase* pObj /*this*/)
怎么判断pObj是CApple还是CBanana ?

------解决方案--------------------
dynamic_cast,为null就不是,有值就是呗!
------解决方案--------------------
不是有个关键字可以在运行时看到对象类型信息么?
多态的环境下虚函数表来决定调用哪个类型的虚函数
不同意1楼,基类不可转子类。多态的实现不是用转换的,是用指针实现的。
------解决方案--------------------
不就是RTTI么……大工程禁用了的话那就自己实现一个。
------解决方案--------------------
不像java,c++对类型的动态确定支持的本来就不好,而且动态判定类型也是C++不提倡的,所以尽量不要用。