首先,要明确运行时刻的多态依赖于类的继承与虚函数。
(可以去看我之前写的文章)

基本做法是:在基类与派生类中定义函数原型相同的两个虚函数,然后定义基类的指针,用积累的指针指向不同的派生类对象,通过虚函数即可实现运行时多态。

代码例子:

#include <iostream>
using namespace std;class vehicle {public:vehicle(int n = 0, int m = 0) { //初始基类的构造函数axspeed = n;//对数据成员进行赋值Weigh = m;}virtual void run() { //初始基类的两个成员函数cout << "vehicle run!" << endl;}void stop() {cout << "vehicle stop!" << endl;}private:int axspeed;int Weigh;
};class bicycle : virtual public vehicle {public:bicycle(int x = 0, int y = 0, int z = 0) : vehicle(x, y) //中间派生类的构造函数,//需要为初始基类提供形参{Height = z;}void run() {cout << "bicycle run!" << endl;}void stop() {}private:int Height;
};class motorcar : virtual public vehicle {public:motorcar(int x = 0, int y = 0, int z = 0) : vehicle(x, y) //中间派生类的构造函数,//需要为初始基类提供形参{SeatNun = z;}void run() {cout << "motorcar run!" << endl;}void stop() {}private:int SeatNun;
};class motorbicycle : public bicycle, public motorcar {public:void run() {cout << "motorbicycle run!" << endl;}void stop() {}
};int  main() {vehicle v;bicycle b;motorcar mot;motorbicycle mo;v.run();b.run();mot.run();mo.run();vehicle *ve = new vehicle;ve = &v;ve->run();ve = &b;ve->run();ve = &mot;ve->run();ve = &mo;ve->run();return  0;
}

希望对大家有帮助!!!

如何实现运行时刻的多态?(c++)相关推荐

  1. Unity运行时刻资源管理

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/03/2998157.html Unity运行时刻资源管理 ------------------ ...

  2. 编译原理运行时刻环境

    编译原理运行时刻环境 运行时存储组织概述 编译程序是将源程序的算法描述部分和数据说明部分,分别翻译成机器目标代码和数据存储单元,最终获得目标程序. 目标程序在目标机环境中运行时,都置身于自己的一个运行 ...

  3. C++工作笔记- C++中的动态类型与动态绑定、虚函数、运行时多态的实现

    动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...

  4. C专家编程 第11章 你懂得C,所以C++不再话下 11.13 多态---运行时绑定

    多态---运行时绑定     多态(polymorphism)源于希腊语,意思是"多种形状".在C++中,它的意思是支持相关的对象具有不同的成员函数(但原型相同),并允许对象与适当 ...

  5. java多态编译,java多态 运行时多态和编译时多态

    java多态 运行时多态和编译时多态 我们知道java的多态是一个重要的特性,其中体现java的多态有两种形式.运行时的多态和编译时的多态. 编译时的多态会发生在方法重载的时候,方法的重载指方法名相同 ...

  6. java之父求职_Java求职实战之继承和多态

    1.final修饰变量时,是引用不能变,还是引用的对象不能变? 是指引用变量不能变,引用对象的内容可以变. 2.==和equals有什么区别? 网上搜索一下,发现很多人解释的都比较清楚了.自己简单概括 ...

  7. Java学习--多态

    1. 多态 多态:同一个对象(实物),在不同时刻体现出来的不同状态 多态的前提: A:要有继承关系 B:要有方法重写 C:要有父类引用指向子类对象 父类 f = new 子类() 多态中的成员访问特点 ...

  8. 面向对象的三特性(继承、多态、封装 )Python

    继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentCla ...

  9. JAVA多态(向上转型)与RTTI向下转型

    多态 late-binding, 在编译前不确定 函数调用和哪个具体实现绑定 在程序运行期间,再决定函数调用和哪个具体实现绑定. /** polymorphism*/ class S{public S ...

最新文章

  1. php 打开动态链接,php调用com组件-dll文件(动态链接库)
  2. React笔记:React基础(2)
  3. 2021年网购大数据:哪些品类坑最多?什么价位的商品最有保障?
  4. JS 原生 AJax
  5. stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)
  6. 你想象中的实习是什么样的?
  7. linux tips 技巧笔记一
  8. 我们一定要有自立的飞秋觉悟
  9. 拖拽图片到另一个div里
  10. 台式计算机如何封存,一种计算机用声卡封存装置的制作方法
  11. 最近朋友圈很火,有关全网vip影视自助建站系统是真的吗?靠谱吗?
  12. C++ stack用法
  13. 纯css画三角形/梯形(兼容ie6)
  14. 项目初始化及文件配置-黑马头条PC
  15. 弘辽科技:腾讯发力XR新业态有赞打通腾讯惠聚新增私域引流能力
  16. Java计算机毕业设计水果商城源码+系统+数据库+lw文档
  17. c语言2级成绩时间,二级c语言考试时间
  18. 什么是事件代理(事件委托)有什么好处
  19. android壁纸显示逻辑
  20. 研究了半天,终于把数字孪生内涵搞清楚了 by 傅一平

热门文章

  1. EOF的意义及用法(while(scanf(“%d“,n) != EOF))
  2. C语言进制转换时自动扩展位?(原码、反码、补码)(打印%o、%x时会自动扩展到32位【负数先得到其十进制真实数值,再根据其真实数值得到八进制、十进制补码】)
  3. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象
  4. 使用ONVIF协议控制海康威视球机
  5. 每天学一点儿shell:shell字符串变量的基本操作
  6. Java 11都有哪些新特性?
  7. spring @order控制对象的顺序
  8. 在java中使用base64加密解密的方法
  9. 在java中删除某个文件
  10. 对账模块和赊购退款、还款流程