c++谭浩强教学第6章修的(周四学时)

c++谭浩强教学第6章修的(周四学时)

ID:40524748

大小:613.50 KB

页数:37页

时间:2019-08-04

c++谭浩强教学第6章修的(周四学时)_第1页
c++谭浩强教学第6章修的(周四学时)_第2页
c++谭浩强教学第6章修的(周四学时)_第3页
c++谭浩强教学第6章修的(周四学时)_第4页
c++谭浩强教学第6章修的(周四学时)_第5页
资源描述:

《c++谭浩强教学第6章修的(周四学时)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章多态性与虚函数6.1多态性概述一、多态的分类二、多态的实现6.2一个典型的案例6.3虚函数6.4纯虚函数和抽象类一、纯虚函数二、抽象类三、程序举例186第六章多态性与虚函数6.1多态性概述所谓多态性是指:对于不同类的对象发出相同的消息将会有不同的实现。多态性也可以这样理解:在一般类中定义的属性或服务被特殊继承之后,可以具有不同的数据类型或不同的实现。多态性的目的在于:用同样的接口访问不同功能的函数。一、多态的分类从系统实现的角度划分静态多态性:在程序编译时,系统就能确定调用的是哪一个函数。如:函

2、数重载和运算符重载等。动态多态性:在程序运行过程中,系统才能动态的确定调用的是哪一个对象。本章重点讲述的是:动态多态----虚函数。二、多态的实现编译时的多态性是通过静态联编实现的,而运行时的多态性是通过动态联编实现的。所谓联编是指把函数名与函数体的程序代码连接在一起的过程。1.静态联编186静态联编是指在程序编译连接阶段进行的联编,即编译器在程序开始运行前的编译阶段就确定程序所要进行的操作,从而调用固定的函数。2.动态联编动态联编是指程序运行时进行的联编,即指编译器在连接期间不知道程序所要进行的操作

3、,在运行时才确定调用哪个函数。6.2一个典型的例子(P199)例6.1建立一个Point(点)类,包含数据x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle(圆)类为直接基类,派生出一个Cylinder(圆柱体)类,增加数据成员h(高)。要求编写程序,重载运算符“<<“和”>>”,使之能用于输出以上类对象。(1)先声明基类Point(点)类#includeclassPoint//声明类Point{public:Point(fl

4、oat=0,float=0);//构造函数voidsetPoint(float,float);//设置坐标值186floatgetX()const{returnx;}floatgetY()const{returny;}friendostream&operator<<(ostream&,constPoint&);protected:floatx,y;};//定义Point类的成员函数//Point的构造函数Point::Point(floata,floatb){x=a;y=b;}//设置x和y的坐标值v

5、oidPoint::setPoint(floata,floatb){x=a;y=b;}//输出点的坐标ostream&operator<<(ostream&output,constPoint&p){output<<"["<

6、new):"<

7、tCircle&);private:floatradius;//半径186};//定义构造函数,对圆心坐标和半径初始化Circle::Circle(floata,floatb,floatr):Point(a,b),radius(r){}//设置半径值voidCircle::setRadius(floatr){radius=r;}//读取半径值floatCircle::getRadius()const{returnradius;}//计算圆面积floatCircle::area()const{retur

8、n3.14159*radius*radius;}//重载运算符“<<”使之能按规定的形式输出圆的信息ostream&operator<<(ostream&output,constCircle&c){output<<"Center=["<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。