C入门之多态(2)
试图用最简单方法助力初学者学会C++。
昨天写了虚函数,所谓虚函数是指在成员函数定义时加virtual 关键字。形如 virtual voidShow(); 这就是个虚函数(或叫做方法)。虚函数可以在子类中改写(非虚函数在子类中也可以改写,但是无法使用多态性)。今天说一下纯虚函数。
直接上例子:
图1 父类中定义了纯虚函数
图2 类的使用
从图1可以看到,virtual void Show() = 0声明了一个纯虚函数,正如你能看到的是,纯虚函数不需要在声明它的基类中实现,而是需要在子类中实现。也就意味着Parent类不能直接使用,而只能使用它的子类。如图2中所示,Parent *p = new Child_A ,可以new出子类但是不能new出Parent,因为Parent中有纯虚函数。图2中运行结果是:This is Child_A。
在这里,我们甚至可以将Parent类视为接口类,它的作用只是用来定义接口,而接口的具体实现由其子类来实现。那这样做有什么意义呢?
假如Parent 类有俩个子类分别是Child_A 和Child_B,那么我们只需要定义个Parent指针,就可以需要的时候切换使用Child_A 和 Child_B.比如下面一种场景:
int i = 0;
Parent* p = nullptr;
if ( 0== i)
{
p = new Child_A;
}
else
{
p = new Chilid_B; //类B按照A去自行定义即可
}
p->Show();
当i 是 0时,输出的结果是:This is Child_A. 否则输出This is Child_B。这就是多态的意义。这里还隐含了一个简单工厂的设计模式,以后再详细聊。
虚函数和纯虚函数的区别就在于,纯虚函数不能在基类中实现,必须在子类中实现,而且在代码中只能实例化子类。
又悬了?辽篮副总边强正式回应,球队或做两手准备最近这段时间关于辽宁男篮,大家比较关注的还是大外援的问题,特别是莫兰的回归问题。此前莫兰德的中方经纪人晒出了一张照片,这张照片是在美国拍摄的,照片当中有三个人,莫兰德,莫兰德的中方
世界中国日本场地中长跑2022年成绩对比差距何止马拉松!我国马拉松运动在过去10年取得巨大进步,但这种进步主要体现在大众马拉松运动马拉松产业和路跑装备等等蓬勃兴起。从专业竞技领域实事求是说,虽然我国去年男子半程马拉松取得突破,但总体而言
狂飙大结局,为什么会让人感觉一种失落感狂飙终于迎来了大结局,剧里的坏人好人也都迎来了自己的结局,坏人受到惩罚,好人受到嘉奖,最终正义还是战胜了邪恶。可是这部剧看完后,在感叹人生的同时,却总有一种失落感。来源于网络这种失
殷商的谢幕盘庚迁殷后,商朝得到了进一步发展。直至武丁即位以后,商四处讨伐,征服了周围许多方国,扩大了领土,商朝这时的国力达到鼎盛时期。武丁死后,商朝逐渐开始衰落了下来。公元前1076年左右商
姜子牙为什么不神化妲己?因为杀害无辜的人?女娲对她说了什么?姜子牙为什么不神化妲己?并不是因为妲己杀了无辜的人。女娲娘娘对他说了什么?很多人认为,姬发讨伐商朝,是因为九尾狐妲己滥杀无辜,导致百姓生灵涂炭。其实这种说法大错特错,因为妲己非但不
篮坛李铁案重大突破,当事人纪委介入,或掀反腐扫黑新风暴众所周知,退役球员孟祥宇早前在社交媒体上面,实名举报了天津篮管中心张润起,揭开了这一桩中国篮坛的贪腐丑闻。从目前最新的消息显示,当事人孟祥宇透露,天津市纪委驻体育局监察组,已经联系
张家口市新增4家AAA级景区近日,记者从市文旅局获悉,根据旅游景区质量等级划分与评定和旅游景区质量等级管理办法相关规定,经景区自查申报县级初评推荐市级组织评定,张家口市宣化黄羊山文化园万全九龙峪景区张北国家风
百年弄堂满满手作的年味,今潮8弄元宵好市成双既海派又新潮传统的拉毛兔子灯,配上了幻彩小灯泡本地汤圆做法,搓出了枣粒松仁新口味这个周末,今潮8弄与早春乐事集闲下来年味市集共同携手,带来以好好过元宵与好兔游园为主题的元宵双市集,让市民游客观
东非大裂谷作者田广凤曾任中华人民共和国驻几内亚比绍共和国特命全权大使莫桑比克共和国特命全权大使东帝汶民主共和国特命全权大使,外交部港澳台事务司大使。在肯尼亚纳库鲁湖国家公园拍摄的火烈鸟和鹈鹕
阿森纳输球,曼城球迷社媒感谢埃弗顿谢谢你!反击从现在开始直播吧2月5日讯本轮英超阿森纳客场01不敌埃弗顿,遭到赛季第二败。赛后,有曼城球迷在社媒上对埃弗顿表达了感激之情。以下为曼城球迷的部分推特节选球迷Nishant在古迪逊球场,埃弗顿
人穷少做三事,人富莫说三话此生,每一步都是自渡古人有言命由己造,福自己求。命运,那是由自己来把握的。福气,并不是天生的,而是自己求取得来的。人之一言一行,都会对当下或者未来的命运,产生不可估量的影响。为什么这世间会存在因果?因