C++入门之多态(2)——纯虚函数

时间:2022-10-09 17:58:26 | 浏览:396

试图用最简单方法助力初学者学会C++。昨天写了虚函数,所谓虚函数是指在成员函数定义时加virtual 关键字。形如 virtual voidShow(); 这就是个虚函数(或叫做方法)。虚函数可以在子类中改写(非虚函数在子类中也可以改写,但

试图用最简单方法助力初学者学会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。这就是多态的意义。这里还隐含了一个简单工厂的设计模式,以后再详细聊。

虚函数和纯虚函数的区别就在于,纯虚函数不能在基类中实现,必须在子类中实现,而且在代码中只能实例化子类。

相关资讯

C++编程调试秘笈:c++的缺陷来自哪里?

C++语言是非常独特的。虽然实际上所有的编程语言都从其他语言中吸收了一些思路、语法元素和关键字C++却是吸收了另一种完整的语言,即C语言。事实上, C++语言的创建者Bjarne Stroustrup原先把他的新语言命名为"带类的C"。这意

C++编程自学宝典:初识C++语言

第1章初识C++为什么选择C++?从读者自身的实际情况来看,原因有很多。读者选择C++可能是因为必须为一个C++项目提供技术支持。在超过30年的生命周期中,该项目中已经包含了数百万行C++代码,并且大部分流行的应用程序和操作系统是使用C+编

C++20即将于年底发布,C++23提上日程

作者 | Herb Sutter译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)C++20已全票通过,有望于今年晚些时候发布9月4日,C++ 20的国际标准草案投票结束,而且获得了全票通过。这意味着C++ 20已完

C++基础语法梳理:网络编程丨Socket

SocketLinux Socket 编程(不限 Linux)Socket 中的 read()、write() 函数ssize_tread(intfd,void*buf,size_tcount);ssize_twrite(intfd,con

C++基础语法梳理:计算机网络丨传输管理(TCP)

TCP 传输连接管理因为 TCP 三次握手建立连接、四次挥手释放连接很重要,所以附上《计算机网络(第 7 版)-谢希仁》书中对此章的详细描述:https://gitee.com/huihut/interview/raw/master/ima

学c++不再难

众所周知,C++难。就好像博大精深的汉语比英语难,这是客观事实,我们并不否认。但,转念想想,英语也不简单吧?从小学开始学,到了大学,挂在四六级上的同学数不胜数。可貌似没有人说不好汉语吧,此时,你能说汉语比英语简单么?不过是环境使然罢了。

既有面向过程,为何还要面向对象(C++)

C++语言称为C with Classes,C++比C到底加了什么呢?C++对C语言(面向过程)的扩充主要表现在面向对象和泛型编程两部分。另外,C++对C语言的基础方面如函数、变量类型等也进行了完善和添加。泛型编程最初诞生于C++中,由Al

C/C++编程笔记:浅析C语言中宏定义的使用,知识点全解

宏定义是用一个标识符来表示一个字符串,在宏调用中将用该字符串代替宏名。给程序员提供了便利,使程序更加清晰,便于阅读和理解,进一步提高了程序的运行效率,对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法,但是使用不慎会得到

Linus:C++是很烂的语言

出品|开源中国文|局长科技外媒 ITWire 报道了对 Linus Torvalds 的采访。关于 Linux 内核对 Rust 的支持情况,Linus 回应称“Linux 内核尚未支持 Rust”,并补充说“目前相关工作正处于开发阶段,预

C++标准语言不断被开发,C++却走向了下坡路!

C 和 C++ 的没落,不仅是因为 CPU 时钟周期的关系,而且因为关系到了开发者的时间全球大约有400万C和C++程序员,很可能是最大的社区了,约占20%的市场份额,不亚于Java,甚至还要更多一些(C和C++一起)。它们也是当前主流语言

友情链接

天天财经元宇宙中国SEO域名抢注宝宝起名网网站监控今日渭南常德新闻头条网湖南旅游网西双版纳旅游网今日哈尔滨兼职悬赏猫今日衡水新能源汽车网邵阳新闻头条网家政保姆网自贡新闻头条网周公解梦官网世纪数藏NFT今日宣城深南电路A股青岛旅游网揭阳新闻资讯网福州新闻资讯网鹰潭新闻资讯网平顶山新闻头条网濮阳新闻头条网韶关新闻资讯网丽江旅游网合浦月饼网吉林旅游网七夕情人节台湾卤肉饭加盟官网澳门旅游网河池新闻头条网澳洲进口奶粉代购
c语言中文官网-零基础c++从入门到精通pdf、c语言编译器、C/C++开发工具、c语言入门自学零基础、c++入门自学、c/c++软件下载、c语言编程软件、c语言自学免费网站、c语言零基础自学视频教程、c++手机编程软件、c语言入门程序设计、初级编程视频教程、c语言在线编程平台、C语言线上作业网站。
c语言中文官网 chuxinxin.cn©2022-2028版权所有