网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月23日
漏签
0
天
c++吧
关注:
570,822
贴子:
2,098,113
看贴
图片
吧主推荐
游戏
23
回复贴,共
1
页
<<返回c++吧
>0< 加载中...
这个问题我抽了一包烟也没想明白
只看楼主
收藏
回复
温流君丶
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如图,子类重写父类的普通成员函数,也能达到多态的效果,为什么要设计出虚函数来实现多态?
就为了多一个虚表?
温流君丶
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我抽烟抽糊涂了?
温流君丶
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
大家懂我的意思就行,就是只要子类重写父类普通成员函数,就一律构成多态,C++为什么不这么设计呢
初春的飞舞
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
就像java里面的泛型一样
Artist
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
对于msvc来说,虚表就是在类开始地址处安插一个v ptr的指针指向虚表,因此虚表是类独占的。当发生重写时,编译器会执行动态绑定,将对应位置的函数替换装为新的函数,因此当你子类转父类时,在对象开头的vptr实际指向的是同一个虚表,所以父类可以调用到子类的重写函数,这也就是为什么推荐将父类析构写成虚函数。
zla0402
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
因为为了多态啊,共同用父类指针管理的多个不同子类对象,他们的同名函数行为不一样……
轩辕9000
&&
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
运行时多太,编译时多态。虚函数,crtp
燕归2020
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
什么是虚的,就是可以空的不实现,子类根据自己需要实现,做为接口函数
起个名字
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
恰好相反,这不是多态要的效果,参数父类指针,调用父类函数,那还这么麻烦干啥?父类指针调用子类函数才是想要的多态效果啊
史怜梦
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
用来给继承关系的类相互访问对方的能力
洪水证人
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
多态就是多态,哪来的“类似多态”?用swich假装多态,就根本不是多态,不符合多态概念的定义。
举个简单的例子,图形界面里的各种窗口和控件都拥有共同基类。窗口基类定义了所有窗口的共通功能,比如在屏幕上的位置大小,移动窗口的方式是一致的,但每种窗口的外观和行为是完全不同的。
如果不用多态来实现,你就必须在每一段代码里这样做:包含一切窗口的头文件,用switch语句识别窗口类型,调用相应的处理函数。当需要窗口绘制自己,或者需要响应鼠标事件,等等等等,每一处诸如此类的地方,重复这样编写。
如果你增加了一个新的窗口类型怎么办?你数得清楚需要修改多少地方吗?这种代码就是程序员段子里讲的“屎山”,如果你这样编程,你就成了在屎山上拉屎的那个家伙。
更何况,有些时候这根本就不可能做到。比如你就在微软工作,正在设计MFC框架,你怎么可能知道应用程序会定义什么样的窗口,还包含他们的头文件并加以调用?应用程序推出个新设计,难道还要通知微软改操作系统?
非酋联常任理事
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
用实例对象谈不上多态。你用父类指针指向一个子类对象看看,再用父类指针指向父类对象、另一个子类对象。调用他们的虚函数自己试试
享受孤独
&&
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你这阶段,纠结这个没意义,等你多敲点代码,看看设计模式,知道接口,纯虚类,运行时多态就明白了
大概还有两年半
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
设计模式里的模版方法听说过没
不一样的惩
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
就是抽象基类,可以根据实现,调用一个函数达到不同结果。比如你声明一个基类stream专门抽象流数据,里边声明一个write(void* wptr, int size);和read(void* wptr, int readSize);那么无论子类实现的是文件流还是控制台输入输出流,或者是网络连接输入流,都可以直接调用两个基函数写入或读取想要的数据
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示