中类的多态与虚函数的使用

出处:PConline 2005年03月16日 作者:管宁 责任编辑:xietaoming

文章导读:类的多态特性是支持面向对象的语言最主要的特性,很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然。本文将详细讲解类的多态与虚函数的使用。

类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基础的读者注意!

多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码:

//例程1

#include

using namespace std;

class Vehicle

{

public:

Vehicle(float speed,int total)

{

Vehicle::speed=speed;

Vehicle::total=total;

}

void ShowMember()

{

cout<

}

protected:

float speed;

int total;

};

class Car:public Vehicle

{

public:

Car(int aird,float speed,int total):Vehicle(speed,total)

{

Car::aird=aird;

}

void ShowMember()

{

cout<

}

protected:

int aird;

};

void main()

{

Vehicle a(120,4);

a.ShowMember();

Car b(180,110,4);

b.ShowMember();

cin.get();

}

在c++中是允许派生类重载基类成员函数的,对于类的重载来说,明确的,不同类的对象,调用其类的成员函数的时候,系统是知道如何找到其类的同名成员,上面代码中的a.ShowMember();,即调用的是Vehicle::ShowMember(),b.ShowMember();,即调用的是Car::ShowMemeber();。

但是在实际工作中,很可能会碰到对象所属类不清的情况,下面我们来看一下派生类成员作为函数参数传递的例子,代码如下:

//例程2

#include

using namespace std;

class Vehicle

{

public:

Vehicle(float speed,int total)

{

Vehicle::speed=speed;

Vehicle::total=total;

}

void ShowMember()

{

cout<

}

protected:

float speed;

int total;

};

class Car:public Vehicle

{

public:

Car(int aird,float speed,int total):Vehicle(speed,total)

{

Car::aird=aird;

}

void ShowMember()

{

cout<

c语言支持虚函数,C语言多态虚函数.doc相关推荐

  1. c语言写易语言支持库6,易语言编写支持库

    ========== 1.易支持库机制 ========== !!!易支持库的库信息.命令信息等等均使用某个结构储存 !!!易源码中的自定义数据类型.类模块.组件即为支持库中的库定义数据类型 !!!易 ...

  2. python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程

    本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一,匿名函数 def add(x,y) return x+y ...

  3. go语言支持继承吗_Go语言的结构体嵌入为什么不算继承?

    今日端午节,又是高考.祝大家节日快乐,祝考生考出好成绩,大家开车请勿鸣笛! 面向对象的设计思想,是根据现实世界进行抽象得出的一套理论.既然是现实世界的抽象,继承的本质是有"父子"关 ...

  4. C++核心编程【只讲解C++语言特性,需要有C语言基础】

    目录 1 内存分区模型 2 引用 3 函数提高 4 类和对象 4.1 封装 4.2 对象的初始化和清理 4.3 C++对象模型和this指针 4.4 友元 4.5 运算符重载 4.6 继承 4.7 多 ...

  5. C语言面向对象编程(三):虚函数与多态

    在< C++ 编程思想>一书中对虚函数的实现机制有详细的描述,一般的编译器通过虚函数表,在编译时插入一段隐藏的代码,保存类型信息和虚函数地址,而在调用时,这段隐藏的代码可以找到和实际对象一 ...

  6. 【C++ 语言】面向对象 ( 继承 | 重写 | 子类调用父类方法 | 静态多态 | 动态多态 | 虚函数 | 纯虚函数 )

    文章目录 类的继承 方法的重写 子类中调用父类方法 多态 虚函数 虚函数示例 纯虚函数 相关代码 类的继承 1. 继承表示 : C++ 中继承可以使用 ":" 符号 , 格式为 & ...

  7. C++语言虚函数表实现多态原理

    首先介绍一下为什么会引进多态呢,基于c++的复用性和拓展性而言,同类的程序模块进行大量重复,是一件无法容忍的事情,比如我设置了苹果,香蕉,西瓜类,现在想把这些东西都装到碗这个函数里,那么在主函数当中, ...

  8. C++_类和对象_C++多态_多态的基本语法_静态多态_动态多态_虚函数---C++语言工作笔记069

    然后我们再来看看C++中的多态,这里还要注意一点,就是在C++中是可以用多继承的, 但是java.不行,只能实现多个接口,不能继承多个类.这让c++会更加灵活一点. 可以看到,上面说了,在c++中,分 ...

  9. c语言中 允许函数重载么,简述C++语言支持函数重载问题介绍

    对于C++语言作为一种欲与C兼容的语言,C++语言保留了一部分过程式语言和特点,foo_int_int这样的名字包含了函数名.函数参数数量及类型信息,C++语言就是靠这种机制来实现函数重载的. 因而它 ...

最新文章

  1. linux httpd 域名映射,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  2. 日本奥委会主席否认为争取奥运会主办权行贿
  3. pycharm 如何通过VCS快速提交代码?
  4. C++Merege Sort合并排序的实现算法(附完整源码)
  5. system类的 静态方法可以启动垃圾回收器。_Java—System类入门学习
  6. 【NoSQL】NoSQL入门和概述 - 笔记
  7. 深度学习笔记:Tensorflow手写mnist数字识别
  8. 基于xilinx vivado的XADC IP设置使用详解
  9. 解决This picacion faied to trt becuse t could, not find or load the Qt platform plugin “windows““问题
  10. Django使用笔记
  11. IT营Koa2教程_Koa2+Nodejs+MongoDb打造企业级CMS前后端全栈项目实战视频教程(大地)
  12. java逻辑删除代码_MybatisPlus实现逻辑删除功能
  13. PicGo+Github图床配置
  14. 期权、期货及其他衍生产品 第一章读书笔记
  15. 揭秘:寻找水军组织,宝妈兼职月入3000+
  16. 【UE4】HUD(蓝图)
  17. Glide,AndroidX包兼容问题
  18. 程序员,要不要考软考高级职称?
  19. 刷脸支付到来用户连密码都不需要
  20. 唱给挚爱高妹(大头妹)的歌~~~

热门文章

  1. GithubPage构建博客常用模板地址汇总
  2. 邓白氏号码(DUNS Number)查询
  3. nfs-ganesha 导出多个目录
  4. winxp计算机名称改了恢复,WinXP如何修改Netbios名和计算机名有什么不同
  5. Linux系统安装Anaconda3
  6. 【Android基础】多线程编程
  7. 甲方提供的工程量清单,(施工方)我方与甲
  8. msvcp140.dll丢失的解决方法win10_简单方便一点的方法推荐
  9. 周纵苇——三维迁移学习报告笔记
  10. 人工智能 | ShowMeAI资讯日报 #2022.06.19