社区
C++ 语言
帖子详情
A类对象强制转换成B类后或赋给B类类型的指针变量后,调用同样的函数,是调用A类的还是B类的?
sunsys
2003-11-13 10:36:34
A类对象强制转换成B类后或赋给B类类型的指针变量后,调用同样的函数,是调用A类的还是B类的?
...全文
82
14
打赏
收藏
A类对象强制转换成B类后或赋给B类类型的指针变量后,调用同样的函数,是调用A类的还是B类的?
A类对象强制转换成B类后或赋给B类类型的指针变量后,调用同样的函数,是调用A类的还是B类的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunsys
2003-11-19
打赏
举报
回复
对呀,我就是问
1。 A类对象强制转换成B类
或者
2。 A类对象的地址赋给B类类型对象的指针变量 后,
调用A和B中都有的相同的函数
对象切片?!何解?
还有 为啥 继承关系,若是虚函数,则应该仍然是A类的呢?
小弟 拜谢了!!!
sunsys
2003-11-19
打赏
举报
回复
zcs001 理解很透彻呀!
多谢指点!
zcs001
2003-11-19
打赏
举报
回复
TO:sunsys
对象切片发生在用 继承类对象给基类对象赋值 或 将继承类对象强制转换成基类对象时;
而如果将 基类对象的指针或引用 指向 派生类对象,就是所谓的向上映射,他们之间的机制
是完全不同的。
从你的问题看,你的基础不是很牢固,请看一看C++编程思想(第一版)的相关章节,你就会很明白的。
noirchloe
2003-11-18
打赏
举报
回复
这种问题也有........
Andy84920
2003-11-18
打赏
举报
回复
调用什么函数-----
看这个函数是否虚拟,是否是类层次关系.
看调用它的是对象还是指向对象的指针或引用.
如果是指针或引用,又应该知道它实际指向或引用的是什么对象.
是否与它的静态类型相同!
当一个指向基类的指针或引用指向(引用)继承类对象.
而所调用的函数又是虚拟的.则会调用继承类的函数实例(如果有重定义的话);
对象只能静态绑定.
datablader
2003-11-18
打赏
举报
回复
调用同样的函数,应该是指A和B中都有的吧,而且,应该指的是有继承关系的类吧。那么,如果是非虚函数,则调用B类的,如果是虚函数,则应该仍然是A类的。
smaxll
2003-11-18
打赏
举报
回复
祖先类不一定是基类吧,还有可能多重继承
zhouqingyuan
2003-11-18
打赏
举报
回复
其实究竟怎么样,自己在机器上试验一下不就知道了吗
sevencat
2003-11-16
打赏
举报
回复
非虚函数链接期就决定了.
虚函数到时候查这个类的虚函数指针表.
Wolf0403
2003-11-16
打赏
举报
回复
祖先类?是说基类吗?
zcs001
2003-11-16
打赏
举报
回复
楼上几位兄弟说的实际上是第二种情况,即将A类对象的地址赋给B类对象的指针.
如果将 A类对象强制转换成B类 分几种情况:
1.B类是A类的祖先类. 此时,将会发生对象切片.此时,无论如何,都将调用B类的函数.关于对象切片的详细描述,清参考C++编程思想(第一版),
2.B类不是A类的祖先类.此时,将 A类对象强制转换成B类对象,将会造成一个编译期错误.
darcymei
2003-11-14
打赏
举报
回复
要看两个类之间是否有继承的关系,没有的话肯定是b类的,静态榜定。
有的话,看函数是否为虚(当然指是基类),不是肯定是b类的,原因同上。
是的话,,动态榜定,查虚函数表得到。
rtdb
2003-11-14
打赏
举报
回复
还有,C++里没事别玩强制转换。
yuantao
2003-11-14
打赏
举报
回复
楼上说的对,得看继承关系,还有你调用的函数是不是虚函数,
如果有继承关系的话,而且函数是虚函数的话,还是调用a类的
如果不是虚函数的话,就调用b类的
C语言用
函数
指针
变量
调用
函数
C语言用
函数
指针
变量
调用
函数
C语言
函数
指针
调用
函数
C语言可以定义
指针
变量
指向
函数
,通过
指针
来
调用
函数
。 使用: 1、定义
函数
指针
变量
:
函数
返回值
类
型
(*
指针
变量
名)(); 2、将已有
函数
入口
赋
值给
函数
指针
变量
:fnPt = avg; 3、使用
指针
变量
调用
函数
:(*
指针
变量
名)(参数); 例子:定义
函数
指针
变量
,将不同
函数
赋
值给
指针
变量
,
调用
函数
。 #include //求最大值 int zhizhentest3_1_
将
指针
强制
类
型
转换为
函数
指针
尽管
函数
不是
变量
,但它在内存中仍有其物理地址,该地址能够
赋
给
指针
变量
。获取
函数
地址的方法是:用不带有括号和参数的
函数
名得到。
函数
名相当于一个指向其
函数
入口
指针
常量。 那么既然
函数
名是一个
指针
常量,那么就可以对其进行一些相应的处理,如强制
类
型
转换。 那么我们就可以把这个地址放在一个整形
指针
数组中,然后作为
函数
指针
调用
即可。 强制
类
型
转换的方法如下所示:(参考自http://blog.ch
c++中父
类
子
类
对象
指针
相互转换,
成
员
函数
调用
方式
c++中父
类
子
类
对象
指针
相互转换的问题: 在面向对象开发时,某些场景下需要将子
类
对象
的
指针
强转
成
父
类
指针
进行
调用
,或者,将父
类
指针
强转
成
子
类
指针
进行
调用
,这个时候
成
员
函数
调用
规律是什么样的? 规律:不论是上面说的哪种
强制转换
情况,强转后的
指针
在
调用
虚
函数
时失效,其他情况正常
调用
。 理解:1.子
类
指针
强转
成
父
类
指针
,使用这个父
类
指针
调用
成
员
函数
,本来是应该
调用
父
类
自己的
成
员
函数
的,但由于子
类
的同名
成
员
函数
为虚
函数
,强转失效了,
调用
的还是子
类
的
成
员
函数
。 2.父
类
指针
强转
成
子
类
指针
...
函数
指针
变量
作为
函数
形参
学习了
函数
指针
变量
之后,我们可以把一个
函数
名设置给
函数
指针
变量
,再由
函数
指针
变量
来
调用
该
函数
名。那么,在定义
函数
的时候,
函数
的形参
变量
可以接收实参
变量
传递过来的数据。所以,
函数
指针
变量
是一种
变量
类
型
,也可以作为
函数
的形参
变量
。程序测试例子如下: 程序运行结果如下: 可以看到,
函数
func1的定义如下: voidfunc1(void(*pfunc)(int)) 其中形参的定义是 void(*pfunc)(int) 此时,这个形参
变量
就是一个
函数
指针
变量
。那么,在
调用
fun...
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章