如果通过基类指针判断继承类的类型

Emiyasstar__ 2013-07-04 08:19:00
如题,传入的参数是基类指针,想判断是否属于某个继承类型,怎么做的
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocktyt 2013-07-05
  • 打赏
  • 举报
回复
2楼和6楼的方法本质上和typeid没有任何区别,反而增加了代码量
Lyinsc 2013-07-05
  • 打赏
  • 举报
回复
引用 楼主 Emiyasstar__ 的回复:
如题,传入的参数是基类指针
C++中父类(基类)可以给子类赋值吗?我记得好像只能子类给父类赋值来着。
漫步者、 2013-07-04
  • 打赏
  • 举报
回复
这个只有在设计上下工夫了,自己写一个接口GetCurClassName(),你直接调用就行了
easy_fefrry 2013-07-04
  • 打赏
  • 举报
回复
MFC里面有这项技术吧。 运行时类判断!
startservice 2013-07-04
  • 打赏
  • 举报
回复
dynamic_cast < type-id > ( expression ) 该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void*; 如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。 dynamic_cast运算符可以在执行期决定真正的类型。如果downcast是安全的(也就说,如果基类指针或者引用确实指向一个派生类对象)这个运算符会传回适当转型过的指针。如果downcast不安全,这个运算符会传回空指针(也就是说,基类指针或者引用没有指向一个派生类对象)。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
qzf362269994 2013-07-04
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
dynamic_cast 可以. 但是通常需要这样做的时候都是设计上有问题.
+1 转换合理返回正常指针,不合理返回空 dynamic_cast<type> (object); 关键字dynamic_cast强制将一个类型转化为另外一种类型,并且在执行运行时时检查它保证它的合法性。如果你想在两个互相矛盾的类型之间转化时,cast的返回值将为NULL.
worldy 2013-07-04
  • 打赏
  • 举报
回复
基类指定一个虚拟函数CString IamIs(),每个子孙都实现IamIs(),然后,就可以从IamIs()的返回值知道当前指针是哪个类了
www_adintr_com 2013-07-04
  • 打赏
  • 举报
回复
dynamic_cast 可以. 但是通常需要这样做的时候都是设计上有问题.

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧