教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

多态性在C_面向对象程序设计中的实现

来源:网络收集 时间:2026-06-29
导读: 多态性在C_面向对象程序设计中的实现 第 2卷第 4期 42以抖 河池学院学报J O U R N A L O F H E C H I U N IV E R S IT Y V0 2 4 No 4 1. . 0年 1月 c Ot , 洲 2峨) 4 二二二二二二二二二二二二二二二写 带 多态性在 C(1 2. + + 面向对象程序设计中的实现, 彭

多态性在C_面向对象程序设计中的实现

第 2卷第 4期 42以抖

河池学院学报J O U R N A L O F H E C H I U N IV E R S IT Y

V0 2 4 No 4 1. .

0年 1月

c Ot

,

洲 2峨) 4

二二二二二二二二二二二二二二二写

多态性在 C(1 2.

+

+

面向对象程序设计中的实现,

彭建盛万振武彭其圣河池学院物理系.

’,

,

广西,

宜州湖北。

546 3

0

;

.

中南民族大学+十

电信学院

武汉十+

43( 74 ) X

[摘

要1

多态性是面向对象程序设计语言 C,

的重要概念之一。

从C

多态性的四种实现方式各自特征提出

,

多态性在程序设计中的应用及对这四种实现方式进行比较关〔健词」多态性;类;虚函数;模板

〔图分类号」 n中

弓1 C 2

[文献标识码」

A

[文章编号」

16

2 7

0 9

2 1 (2 0科 ) ( 4 0

1 0 6

O

引言多态性就是不同的对象收到相同的消息时产生不同的动作,

即用同样的接口访问功能不同的函数从:

,

而实现一个接口多种方法

,

”。

在面向对象程序设计语言中多态性有两种基本形式编译时的多态性和运+

,

行时的多态性编译多态性主要通过,

C

+

语言中的重载机制来实现

重载包括函数重载和运算符重载C+

在同一个程++

序的同一个作用域中使用相同的名字定义两个或两个以上的样的标识符命名。

+

函数这样使得语义相近的函数使用同

,

在使用中由函数参数具体确定使用其函数。

运算符重载允许根据需要重新定义 C

言中已经有的运算符来实现的。

运行多态性是指必须在程序运行中才可以确定的多态性,,

运行多态性是通过类的继承和虚函数的使用。。

要产生运行时的多态性首先须设计一个类层次然后在某些类中使用虚函数。,,,

联编是实现面向对象多态性的基础,

虚函数与普通函数的区别在于函数实现的联编方式不同,

虚函数。

使用动态联编与静态联编相反程序编译时并不明确确定调用者与被调用者之间的关系他们之间的调用关系由运行程序的流程决定也就是一个函数调用应当执行哪一段程序代码在程序运行时才得以明确

在面向对象程序设计语言数1。,,

C

+

中多态性的实现方式强制多态重载多态类型参数化多态和虚函,。

,

:

其中类型参数化多态和包含多态称为一般多态性用来系统地

描述语义上相关的一组类型;强制多态

和重载态称为特殊多态性用来描述语义上无关联的类型间的关系

包含多态公有继承关系是一种包含关系。

派生类直接公有继承基类定义中的属性或服务如果一个程序段既能,。

,

处理基类的对象也能处理基类的派生类的对象该程序段称为多态程序段

C

+

+

采用虚函数实现包含

多态1 1.

虚函数

说明并在派生类中重新定义的函数利用虚函数进行动态束定必须用指向基类的指针或引用来访问它在编译阶段 C++的变量名或函数名就与相应的i v

虚函数也叫虚拟函数就是在基类中被关键字,,

,

u t r

l a

,

,

,

存储单元联系起来使用名字也就是使用对应的存储单元带[收稿日期」2 0抖 (

为了把变量名与相应的存储单元分开它用指针

,

o一o[作者简介」彭建盛 ( 19 9 7一

)男助教研究方向电子电路与通信系统设计计算机应用

,

,

,

:

,

多态性在C_面向对象程序设计中的实现

来调用虚函数因此只要改变指针所存地址的值也就间接地改变了调用对象利用虚函数可在基类和派生类中使用相同的函数名定义函数的不同实现从而实现一个接,

,

,

多种

方式1 2.

虚函数技术的实现虚函数技术的实现从技术上有三点要求一是在基类的函数声明前加上,,,,,

:

i t v r

a u l关键字表明该函数为

,

一个虚函数声明该声明表明该函数可以通过导出类对象实例的基类地址指针完成该对象实例的函数调用;二是使用晚绑定技术;最后在代码实现时各个导出类可以重写基类虚函数以便按自己的要求完成相应

功能也可以直接引用基类或上层类的已实现的虚函数功能1 3.

,

晚绑定的实现方法 i t a i当编译器遇到 v r u l关键字时为每个包含虚函数的类创建一张表通常称为虚函数表 ( v,,,

t r

a u l

a l t b

e

,

即 v T BL E ) A

r ) P R指向该对象实例的竹A B L在程序代码中通过基类指针 E调用该虚函数时编译器将自动插人该 V叮R指针并在 V T B比中查找该函数地址代码以便晚绑定时产 AP并用一个 v,

i t r n n e

指针(即

v

,

,

,

生正确的函数用

数则

,

T V

AB

比中存放的是实际运行时将调用的函数的地址如果导出类没有重定义基类的虚函,。

VT A B L E

存放的是基类的函数地址否则存放的是重定义后的函数地址V

r t P,

Cs h a p

e::

d

r a w

( )函数实体

m

C o lo r

S e t c o !O r

对象模型

对象实体r V Pt

( * d r“) (

Ce 1 r

e

l

e::

dr

衅 ( )函数实体

m m

.

e o

lo

.

n

Ra i d lo

Se t

eo

叹)

的导出类对象模型

Set R

d a

iu ( ) s

G e R a iu s ( ) t d

对象实例图J1 4.

带虚函数的++

C

十+

的对象模型,

虚拟析构函数

析构函数可以是虚函数显得很重要。

它是设计,,

C

应用程序的一个重要技巧特别在设计大型程序时类存的及,。

,

时释放是系统安全运行的保障否则可能会产生类存被耗尽的后果使程序无法执行,

所以虚拟析构函数u

v t r在基类中的析构函数被定义为虚函数以后派生类中的析构函数无论是否前面加关键字 i

l a

都为虚

拟析构函数1 5.

析构函数设计为虚函数就可以通过动态连接的方式调用,

,

纯虚函数和抽象类

在设计一个较大的软件项目时往往事先无法在基类中为虚函数给出明确的定义虚函数它的定义留给派生类来做,。

基类中说明一个纯。

这种做法实际上是为程序留下可扩充的接口,,,

通过将虚函数声明为纯虚函数一个类的设计者可以强迫它所有的派生类都必须给出自己具体的实现,

如果在派生类中没有重定义虚函数并给出具体实现那么这个函数在派生类中仍然是纯虚函数该派生类6 …… 此处隐藏:5779字,全部文档内容请下载后查看。喜欢就下载吧 ……

多态性在C_面向对象程序设计中的实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1812425.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)