C++语言之多态
小标 2018-07-25 来源 : 阅读 1106 评论 0

摘要:本文主要向大家介绍了C++语言之多态,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

本文主要向大家介绍了C++语言之多态,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

Polymorphism

本文为C++官网对多态阐述://www.cplusplus.com/doc/tutorial/polymorphism/

在了解多态前需具备如下知识:类、结构体、友元和继承。

指向基类的指针

先来看一个基础例子

 pointers to base class

 在Rectangle和Triangle类中都含有函数area()。main函数中是分别用类对象直接调用。由于Polygon类中没有area成员函数,故ppoly1和ppoly2指针无法调用该函数。如果在基类中也能调用area()那么就不用上面代码中分别调用那么麻烦了,不过问题是area()方法不统一,没法在基类中实现。

虚成员

虚成员是一种能在派生类中重定义的成员函数,通过关键字 virtual 声明。

 virtual members

输出结果:

20

10

0     

在Polygon类中函数 area 被声明成 virtual 因为他将被每个派生类重定义。虽然没有关键字 virtual 函数area也能派生类重定义,但是非虚成员不能被派生类通过基类引用访问。如果此处area前的virtual关键字被去掉,上面三个cout结果都会是0,因为调用的时候会被基类的函数替代。

一个声明或继承了虚函数的类被叫做多态类。

 抽象基类

抽象基类是只能被当作基类,从而被允许拥有未定义的虚成员函数(纯虚函数)。

 abstract class

注意此时 area函数未定义;他的定义被=0取代,这使它变成了一个纯虚函数。至少拥有一个纯虚函数的类叫做抽象基类。抽象类不能被实例化,但能使用其指针。

 abstract base class

 这个例子中都是由基类Polygon指针调用成员函数。还能在基类中使用this指针调用派生类继承的纯虚函数。

 pure virtual members can be called from the abstract base class

虚成员和抽象类赋予了C++多态特性,对面向对象项目用于极大。

以下的例子结合了动态内存、类构造初始化、多态:

 dynamic allocation and polymorphism

此处基类指针声明时直接用的派生类。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程