- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
制作时间2013年8月C++程序设计—多态性和虚函数20虚函数的数据封装.ppt
C++程序设计;函数重载
静态关联和动态关联
虚函数
纯虚函数和抽象类
虚析构函数
程序实例;§1 函数重载;多态性的概念;在C++中,多态定义为不同函数的同一接口。函数和操作符的重载也属于多态。
在C++中,允许在同一作用域内的多个函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。;注意:
(1)作为重载函数至少参数个数或参数类型有所不同。仅返回值类型不同,编译器是无法区别的。
(2)重载函数一般应具有相同的功能,否则会破坏程序的可读性。
(3)重载时使用缺省函数参数要注意二义性。
如: void print(int a,int b);
void print(int a,int b,int c=50);
print(10,100); //调用时将产生二义性,错误!;§2 静态关联与动态关联;#includeiostream.h
class Point
{ public:
Point(double i, double j) {x=i; y=j;}
double Area() const{ return 0.0;}
private:
double x, y;
};
class Rectangle:public Point
{ public:
Rectangle(double i, double j, double k, double l);
double Area() const {return w*h;}
private:
double w,h;
};;Rectangle::Rectangle(double i, double j, double k, double l) :Point(i,j)
{ w=k; h=l; }
void fun(Point s)
{ coutArea=s.Area()endl; }
void main()
{
Rectangle rec(3.0, 5.2, 15.0, 25.0);
fun(rec);
};#includeiostream.h
class Point
{ public:
Point(double i, double j) {x=i; y=j;}
virtual double Area() const{ return 0.0;}
private:
double x, y;
};
class Rectangle:public Point
{ public:
Rectangle(double i, double j, double k, double l);
virtual double Area() const {return w*h;}
private:
double w,h; }; //其它函数同上例;void fun(Point s)
{ coutArea=s.Area()endl; }
void main()
{
Rectangle rec(3.0, 5.2, 15.0, 25.0);
fun(rec);
}
运行结果:
Area=375 ?;§3 虚函数;§3 虚函数;class Point
{ public:
Point(double i, double j) {x=i; y=j;}
virtual double Area() const; //函数声明
private:
double x, y;
};
virtual double Area() const //函数实现
{ return 0.0;};#include iostream.h
class B0 //基类B0声明
{ public:
virtual void display() //虚成员函数
{coutB0::display()endl;}
};;class B1: public B0 //公有派生
{ public:
void display() //自动成为虚函数
{ coutB1::display()endl; }
};
class D1: public B1 //公有派生
{ public:
void display() //自动成为虚函数
{ coutD1::displ
您可能关注的文档
- 使用指南-中核建材电子采购平台.doc
- 使用方法ppt-广西民族大学图书馆-首页.ppt
- 使用无类路由和CIDR-西安思源学院.ppt
- 使用者基本介面设计.ppt
- 使用者操作手册-统购网.doc
- 使电流继电器临界动作的电流值称为动作电流.ppt
- 例如-贵州大学计算机科学与技术学院.ppt
- 例如用户敲击键盘上的某一个键或是.doc
- 例析分式方程的解法-中小学教育网.doc
- 例谈初中数学如何培养学生的数学抽象概括能力-夷陵区教育局.doc
- 初中语文--第三单元诗经二首《蒹葭》教学设计-2023-2024学年统编版语文八年级下册.docx
- 中国重汽商用车相关知识及安全操作试卷.doc
- 第6单元 18 富饶的西沙群岛 精华版2024-2025学年三年级语文上册同步教学设计(统编版).docx
- 六年级上册品德与社会教学设计-9《从丝绸之路到WTO》第1课时∣粤教版.docx
- 2024-2025学年高中生物下学期《细胞增殖》教学设计.docx
- 第12课《与朱元思书》教学设计 2024-2025学年统编版语文八年级上册.docx
- 汽车制造与安全相关知识测试试卷.doc
- 2025过年中国人的集体记忆优秀征文作文.docx
- 银行业金融消费者权益保护知识试卷及答案解析.doc
- 21雪孩子第二课时教学设计2024-2025学年统编版语文二年级上册.docx
文档评论(0)