社区
C++ 语言
帖子详情
如果通过基类指针判断继承类的类型
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 可以. 但是通常需要这样做的时候都是设计上有问题.
C++零基础入门(C++11/C++14)
这是一套系统学习C++新标准(C++11/14起步)的课程。课程系统且全面,理论与代码结合,每节课程都会用最简洁的代码讲解对应C++语法点,同时每节课还配了高清字幕,非常通俗易懂。课程共分为三篇:1) 基础篇:这部分主要学习零散的基础语法,比如变量、常量、运算符、数据
类
型
、enum、union、数组、动态数组、字符串、条件结构、循环结构、函数、
指针
(非常重要)、引用(非常重要,包括C++11开始引入的右值、右值引用)等。2) 面向对象篇:这部分是C++的核心。主要讲解struct、
类
与对象(其中C++11开始引入的移动构造、移动赋值等非常重要!)、友元、运算符重载、
继承
(单
继承
、多
继承
、虚
基
类
等)、多态(虚函数、纯虚函数等)。3) 模板篇:自定义模板(template,包括函数模板和
类
模板)、模板的全特化和偏特化、使用C++标准库提供的模板(比如智能
指针
、STL)等。
C++
基
类
指针
指向派生
类
(
指针
)
我们常用
基
类
指针
指向派生
类
对象来实现多态性。
基
类
指针
只能访问到
基
类
中含有的公有成员。 成员如果是数据成员的话访问的是
基
类
的版本(如果派生
类
中含有相同名字的数据成员的话)。 对于已经被重写的方法成员...
c++(
基
类
指针
、多重
继承
与多
继承
)
如果子
类
覆盖了其
基
类
中的函数成员,但通过
基
类
指针
所访问的成员仍然是
基
类
的成员,而不是子
类
的成员。 比如
基
类
BaseClass拥有函数F,其子
类
ChildClass中覆盖了函数F,那么如下语句将仍然调用A的函数F: Base...
基
类
指针
和派生
类
指针
基
类
指针
指向派生
类
对象 派生
类
对象也“是”
基
类
对象,但两者不同。 派生
类
对象可以当做
基
类
对象,这是因为派生
类
包含
基
类
的所有成员。 但是
基
类
对象无法被当做成派生
类
对象,因为派生
类
可能具有只有派生
类
才有...
C++中通过
基
类
指针
调用派生
类
中定义的方法&&C++
继承
中的名称遮掩
通过
基
类
指针
调用派生
类
中的方法动态绑定静态绑定作用域掩盖dynamic_cast<>动态转型的作用区分接口
继承
和实现
继承
动态绑定 动态
类
型
指“目前所指对象的
类
型
”; 动态绑定是指在执行期间(非编译期)
判断
所...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章