C++ 中关于类派生的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 06:13:18
小弟有如下问题:
class base{} //基类
class derived:public base{} //从base 派生来的类
void Show(base &a)
{
???? //应该怎样写,能判断传进来的a到底是base类还是derived的类?
}

还有就是如下三个函数可否用到上述问题中呢?
1. classname1 * p= dynamic_cast<classname1 *>(p1)
2. static_cast<classname>(expression)
3. typeid()

如果不能用,那能否简明的告诉我下这3个函数的用处呢?

目前,我是在以上两个类中加了一个bool变量进去,false表示base,true
表示派生的derived类,但这似乎不是很正统的做法.

请高手帮下忙了,谢了

可以用1。3来判断:
void Show(base &a)
{
if((derived p = dynamic_cast<derived>(a))
//传进来的a是derived的类
else
//传进来的a是base类
}

或者:
void Show(base &a)
{
if(typeid(a).name() == "derived") //这与编译器有关
//传进来的a是derived的类
else
//传进来的a是base类
}