摘要:本文主要向大家介绍了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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号