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

出处: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. 强制类型转换规则 java_Java学习——第002天学习笔记整理
  2. Java网络编程从0——》入门
  3. SCOI 2014 new :未来展望
  4. HTML5数据推送SSE原理及应用开发
  5. [Angularjs]ng-select和ng-options
  6. python跟我学_灞桥区跟我学python
  7. Java实现的FTP协议断点续传功能(上传/下载)通用类
  8. Visual Assist X V10.7.1929.0 官方原版+破解补丁+破解方法
  9. 易鲸捷首架刘明:Trafodion值得放入工具箱,因为有以下优点
  10. 卸载ie8的一些方法
  11. SPSS干货:区分T检验与F检验
  12. 实业优则投资:危险的游戏
  13. 广州图书馆——携程评论爬取
  14. 【零成本 超详细】使用Win10自带的Hyper-V管理工具搭建虚拟机
  15. ​Au入门系列之二:波形编辑
  16. 子午学术论坛邀请注册码
  17. linux boot分区创建,Linux 更换 Boot分区 磁盘 示例
  18. OpenStack Kolla-Ansible部署Designate域名解析服务DNS服务DNSaas
  19. 美国大学计算机专业录取条件,美国大学CS计算机专业条件是什么呢?
  20. 活动 - Activities

热门文章

  1. Laravel中的.env文件偶发性读取不到,env()获取为空最后取了config默认的值终极解决方案
  2. opengl学习之显示文字
  3. 物联网的基础技术,主要有哪些?
  4. ps制作鲨鱼在橙子“海洋”里游泳的创意画面
  5. python中try,except用法
  6. android如何使用menu键
  7. html5 canvas制作刮刮卡
  8. 笔记本触摸板失灵修复小技巧_想恢复图片原来的背景?PS修复操作小技巧
  9. java ear_Jar/War/Ear等包的作用与区别详解
  10. jstl标签forEach的用法--遍历java的集合