C++:多态与纯虚函数、虚函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuyizhou95/article/details/82457969

问题参考:1.什么是多态?为什么用多态?有什么好处?多态在什么地方用?——https://www.cnblogs.com/hai-ping/articles/2807750.html

                       2.虚函数与纯虚函数的区别——https://blog.csdn.net/hackbuteer1/article/details/7558868

本文的初衷不是为了分享,主要是为了自我学习

面向对象的三大特性:继承、封装、多态

一、谈到多态,就要了解什么是多态?

与语言语法各有特色不同,对于多态的定义是大同小异:

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是通过引用上层模糊概念能够指向具体子类的对象。(注意这里用的是上层模糊概念的字眼,c++实现多态使用的是基类,而java是抽象类)

二、为什么要有多态?

1.解耦

2.提高复用性

3.调高扩展性可维护

三、怎样使用多态度?

C++基类中定义一个方法A,每个派生类都有一个基类A方法的独立实现,这就是多态的一般应用。

虚函数纯虚函数

一、什么是虚函数、纯虚函数?

两方面理解:

1.C++的两种语法定义

2.使用virtual关键字的是虚函数,函数声明的时候=0 没有方法实体的是纯虚函数

eg.

virtual int area(){a=0 return 0};虚函数

virtual int area() = 0;纯虚函数

二、为什么要有这两个概念?

为了更好的实现多态。与java不同,c++没有真正意义上接口的概念,那如何实现接口的功能呢,纯虚函数

想在派生类中更好的扩展,却不想赋予基类函数实际意义(类似java接口)

三、如何使用?

总结以上两点

四、类比java

虚函数功能上很像是java的abstract 抽象类

纯虚函数功能很像是java的interface接口 

要强调的是c++中接口的概念(也就是c++的抽象类)是通过纯虚函数实现的

猜你喜欢

转载自blog.csdn.net/liuyizhou95/article/details/82457969