问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编程时何时使用虚函数,何时使用switch对子类进行区分?

发布网友 发布时间:2024-05-12 04:12

我来回答

1个回答

热心网友 时间:2024-06-02 10:00

首先,使用虚函数需要有一个继承关系。如Dog的父类是Animal,其中A有个virtual void do(),你可以这样写:

Animal* b = new Dog(); //Dog是Animal

这样,b只能使用Animal中提供的方法,因为编译器只知道b是个Animal而不是是个Dog

这个时候,如果你调用 b->do(),那么,编译器会获取b的动态类型,也就是,此时b是当成Dog的,调用的是Dog::do()而不是Animal::do()


回到问题:

如果属性和方法实现不同,说明它们不应该是属于继承的关系。如果以后扩展的可能性小,可以用switch代替多态。

这个看情况而定。如果子类数量有限,且不复杂,可以用switch列出所有的情况。缺点是不利于扩展。多态的缺点是需要构造很多子类,会使得代码变得复杂,所以这个是看需求来的。


switch不是多态,它只是一种if判断语句,多态的行为是由编译器决定的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生回嘿嘿是什么意思(嘿嘿是什么意思) 嘿嘿你是什么意思? 高考自主复习语文知识最全范文 有关高考语文冲刺复习的知识点 让你嘿嘿嘿是什么意思(评论嘿嘿嘿是什么意思) 乐视音乐 我们一起嘿嘿嘿 那首歌 HA HA HA~叫 什么名字 谁唱的? 法律规定没结婚证一胎罚多少 黑魔鬼鱼多久长大 黑魔鬼鱼生长周期需要多久? 我有一只金色的阳光悠悠球,买来100元整,自转时间很长,但收不回来,有什... 我的悠悠球雪鳞锋自转时间一分钟左右。请问这是怎么回事 工商银行国债怎么买 国债购买操作流程 魔兽编辑地图,已经做好了玩家一的触发器,怎么循环让所有玩家都执行触发... lost, aunt,man,wife的对应词是? 再战明天扮演年轻uncle man uncleman是什么意思? ...这个软件,可是安装包里面出现了黑洞。是不是病毒啊 创建文明单位,与复核单位区别 dnf 开了双倍罐子开什么好呢 最后能长期开不怎么亏本的 DNF手里有4000W去开土罐可以赚吗 前辈来~~ 下摆臂胶套可以单独更换吗 追风者中沈图南是地下党吗 追风者沈图南是不是地下党 沈图南加入地下党了吗 沈图南被枪毙了吗 想在戴尔官网买电脑,直到付款发现不是官网,是要付款给翰林汇,就不... 汪汪队游戏大全 ...汪汪向前冲”赛季的隐藏款盲盒是什么?(这是选择题,请输入选项对应的... 心灵终结盟军23核弹位置 头孢点滴是激素吗?自从最近十几年发现身体体质越来越来差,工作不累,天... 请问头孢克肟分散片这药是激素类药物吗? iwanttocola(用she改为第三人称单数) 以“摆渡”为话题,展开联想,仿写三个句子 湖南工业大学电气学院的毕业清考好过么? 湖南工业大学计算机与通信学院毕业生答辩问题 什么叫生闷气啊? 开颅手术后昏迷的人会有痛感吗 长沙五一大道有什么好玩的 怎样用EXCEL进行双变量方差分析啊? 中国广电的apn接入点如何设置? 养脾胃,化寒湿,改善消化不良…这个厨房的小调料,就看你会不会用_百度... 怎么查微信接收的文件在哪里? 如何找到微信已接收的文件? 手机查余额需要开通网上银行吗 一起向未来的歌曲名字叫什么? 牛奶燕窝过夜还能吃的吗 牛奶燕窝过夜还可以吃吗 怕我误会你真的喜欢上我了吧是什么意思 我问女生是不是看上我了,她回复要不拉黑吧,怕我误会是什么意思? 男孩对女孩说"你最好不要喜欢我,怕别人误会."这样的话是什么意思? 如果小产权房遇到拆迁政府应如何赔偿 花肥作用?