- 1
- 0
- 约1.31万字
- 约 36页
- 2022-03-15 发布于上海
- 举报
会计学
1
C备课讲义教程实用
2
虚函数
多态性:调用同一个函数名,可以根据需要但实现不同的功能。
多态性是面向对象的程序设计的关键技术。
编译时的多态性(函数重载)
运行时的多态性(虚函数)
多态性
运行时的多态性是指在程序执行之前,根据函数名和参数无法确定应该调用哪一个函数,必须在程序的执行过程中,根据具体的执行情况来动态地确定
第1页/共36页
3
可以将一个派生类对象的地址赋给基类的指针变量。
基类对象
派生类对象
Base b;
Derive d;
Base *basep;
basep
basep=b;
basep
basep = d;
basep只能引用从基类继承来的成员。
x
Show()
x
Show()
y
Show()
basep -Show();
basep-Show()
基类指针
派生类对象
基类对象
第2页/共36页
4
class Point{
float x,y;
public: Point(){}
Point(float i,float j){ x=i; y=j; }
float area(void) { return 0.0; }
};
const float Pi=3.14159;
class Circle:public Point{ //类Point的派生类
float radius;
public: Circle(float r){ radius=r; }
float area(void) { return Pi*radius*radius; }
};
void main(void)
{ Point *pp; //基类指针,可以将派生类对象的地址赋给基类指针
Circle c(5.4321);
pp=c;
coutpp-area ()endl; //调用的是基类中有的公有函数
}
在基类和派生类中具有相同的公有函数area()。
在这种情况下,使用基类的指针时,只能访问从相应基类中继承来的成员,而不允许访问在派生类中增加的成员。输出为 0
第3页/共36页
5
基类对象
派生类对象
Base b;
Derive d;
basep
basep
x
Show()
x
Show()
y
Show()
basep-Show()
Base *basep;
basep=b;
basep = d;
basep -Show();
即指向派生类新增的成员函数
需要将基类中的Show()说明为虚函数
第4页/共36页
6
若要访问派生类中相同名字的函数,必须将基类中的同名函数定义为虚函数,这样,将不同的派生类对象的地址赋给基类的指针变量后,就可以动态地根据这种赋值语句调用不同类中的函数。
第5页/共36页
7
class Point{ float x,y;
public: Point(){}
Point(float i,float j){ x=i; y=j; }
virtual float area(void) { return 0.0; }
};
const float Pi=3.14159;
class Circle:public Point{ //类Point的派生类
float radius;
public: Circle(float r){ radius=r; }
float area(void) { return Pi*radius*radius;}
};
void main(void)
{ Point *pp; //基类指针,可以将派生类对象的地址赋给基类指针
Circle c(5.4321);
pp=c;
coutpp-area ()endl; //调用虚函数
}
将area()声明为虚函数,编译器对其进行动态聚束,按照实际对象c调用了Circle中的函数area()。使Point类中的area()与Circle类中的area()有一个统一的接口。
输出:92.7011
声明为虚函数
调用虚函数
虚函数再定义
第6页/共36页
8
虚函数的定义和使用
可以在程序运行时通过调用相同的函数名而实现不同功能的函数称为虚函数。定义格式为:
virtual type FuncName(ArgList);
一旦把基类的成员函数定义为虚函数,由基类所派生出来的所有派生类中,该函数均保持虚函数的特性。
在派生类中重新定义基类中的虚函数时,可以不用关键字virtual来修饰这个成员函数 。
第7页/共36页
9
虚函数是用关键字virtual修饰的某基类中的protected或public成员函数。它可以在派生类中重新定义,
您可能关注的文档
- 船舶运营组织技术.pptx
- 第9章收入和利润.pptx
- 八年级数学下册一元二次方程及解法c组冲击金牌新浙教.pptx
- c程序设计增加算法与流程图实用.pptx
- 《成功之路+起步篇+1》第7课.pptx
- ch优化设计实用.pptx
- 班主题班会不要平庸的生活.pptx
- 仓库基础知识迈瑞.pptx
- 地面辐射和大气辐射及影响因素.pptx
- chapter标准成本法实用.pptx
- 2026江苏南京大学图书馆安全保卫和消防人员备考题库附答案详解.docx
- 2026江苏南京大学招聘XZ2026-006物理学院助理备考试题附答案详解.docx
- 沪教版小学数学二年级下册期末复习全景知识清单.docx
- 2026江苏南京大学图书馆安全保卫和消防人员备考试题附答案详解.docx
- 统编版一年级上册期中语文标准试卷.docx
- 全面质量管理问题分析与解决模板.doc
- 2.1、折扣(重难点讲解+知识总结+同步练习+答案解析)(解析版)-2024-2025学年六年级数学下册(人教版).docx
- 2026江苏南通市致豪房地产开发有限公司下属子公司招聘3人备考题库附答案详解.docx
- 2026江苏南通市如皋市科创投集团招聘专业技术人员2人备考试题附答案详解.docx
- 2026江苏南通开放大学社区教育储备兼职教师招聘备考试题附答案详解.docx
原创力文档

文档评论(0)