我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎样通过函数实现C++多态性

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎样通过函数实现C++多态性

这期内容当中小编将会给大家带来有关怎样通过函数实现C++多态性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

C++多态性主要体现在虚函数的调用,在C++中,虚函数的调用使用的是动态绑定,也有人说是晚捆绑,也就是在程序运行时才决定调用的函数,即使程序员不知道对象类型,程序仍然可以作出适合该对象类型的行为。

简单的说,虚函数就是在函数原型前加上virtual关键字。函数一旦被声明为虚函数,即使类在改写它的时候没有将其声明为虚函数,它从该点的继承层次结构中仍然是虚函数。如果基类中一个函数被声明为虚函数,在若干子类中有着不同的实现,那么我们在创建若干子类的不同对象时,可以用基类的指针或者引用来指明子类对象并且调用相应子类的函数。

虚函数的定义方式如下:

◆类的静态成员函数不可以定义为虚函数;
◆类的构造函数不可以定义为虚函数;
◆非类的函数不可以定义为虚函数。

纯虚函数是在声明虚函数时初始化为0的函数。

#include<memory> #include<iostream> using namespace std;  Virtual void print() const = 0;

抽象类

简单的说,带有一个或多个未实现的纯虚函数的类是抽象类。如果一个类继承自一个抽象类,但它没有全部实现父类里面所有的纯虚函数,那么那些纯虚函数在子类中仍然是纯虚的,这个子类仍然是抽象类,仍然不能实例化对象。

抽象类是一种特殊的类,只能作为基类来使用,其纯函数的实现由派生类给出。虽然不能实例化抽象类,但我们可以声明一个抽象类的指针和引用,在实例化对象时,可以用不同的子类来实现,从而实现多态性操作。只有当派生类将基类中的所有的纯虚函数都实现的时候,它才不再是抽象类。

C++多态性

从广义上说,C++多态性是指一段程序能够处理多种类型对象的能力。在C++语言中,多态性可以通过强制多态、重载多态、类型参数化多态、包含多态等多种实现形式。所谓多态就是通过类的继承,使得同一个函数可以根据调用他的对象的类型作出不同的响应。它也继承和重载共同构成面向对象的3大编程特性。

C++多态性通过虚函数来实现,当我们用基类的指针来调用虚函数时,程序会根据对象的属性选择其自身的函数实现。即使程序员不知道对象类型,程序仍然可以作出适合该对象类型的行为。

C++语言支持两种类型的多态:一种是编译时的多态(静态多态),另一种是运行时的多态(动态多态)。在编译时的多态是通过静态联编实现的,而在运行时的多态则是通过动态联编实现的。

上述就是小编为大家分享的怎样通过函数实现C++多态性了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎样通过函数实现C++多态性

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎样通过函数实现C++多态性

这期内容当中小编将会给大家带来有关怎样通过函数实现C++多态性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++多态性主要体现在虚函数的调用,在C++中,虚函数的调用使用的是动态绑定,也有人说是晚捆绑,
2023-06-17

C++ 函数重载如何实现多态性?

函数重载可用于实现多态性,即通过基类指针调用派生类方法,编译器根据实际参数类型选择重载版本。示例中,animal 类定义虚拟 makesound() 函数,dog 和 cat 类重写该函数,通过 animal* 指针调用 makesound
C++ 函数重载如何实现多态性?
2024-04-13

C#中怎么实现多态性

在C#中实现多态性一般通过继承和接口实现。具体方法如下:继承:通过创建一个父类和多个子类,子类继承父类的特性,并且可以重写父类的方法来实现多态性。例如:class Animal{public virtual void MakeSound(
C#中怎么实现多态性
2024-03-06

详解C++虚函数中多态性的实现原理

C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键。本文就来探讨一下C++虚函数中多态性的实现原理及其在面向对象编程中的应用吧
2023-05-19

Python中怎么通过@classmethod实现多态

这篇文章主要介绍了Python中怎么通过@classmethod实现多态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中怎么通过@classmethod实现多态文章都会有所收获,下面我们一起来看看吧
2023-07-04

C++中怎么通过C语言实现函数重载

这篇文章给大家介绍C++中怎么通过C语言实现函数重载,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C++函数重载的相关模拟代码:int (*func)(void); int func1(void) { int
2023-06-17

C++ 函数重载和重写中多态性的体现

c++++ 中的多态性:函数重载允许具有相同名称但不同参数列表的多个函数,根据调用时的参数类型选择执行的函数。函数重写允许派生类重新定义基类中已存在的方法,从而实现不同类型的行为,具体取决于对象的类型。C++ 函数重载和重写中多态性的体现
C++ 函数重载和重写中多态性的体现
2024-04-20

CLR Via C#静态构造函数的性能是怎样的

本篇内容主要讲解“CLR Via C#静态构造函数的性能是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CLR Via C#静态构造函数的性能是怎样的”吧!1 CLR Via C#静态构造
2023-06-17

C++中的多态问题—理解虚函数表及多态实现原理

这篇文章主要介绍了C++中的多态问题—理解虚函数表及多态实现原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-05

OpenCV-Python怎么实现通用形态学函数

这篇文章将为大家详细讲解有关OpenCV-Python怎么实现通用形态学函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通用形态学函数,我们介绍了形态学的基础腐蚀与膨胀操作,而将腐蚀与膨胀结合起来进行组
2023-06-15

STL 函数对象是否支持多态性?如何实现?

stl函数对象支持多态性,实现方式如下:使用虚拟函数和虚继承定义抽象基类及其派生类。为每个派生类定义特定版本的函数。将具体类作为参数传递给算法。STL 函数对象是否支持多态性?标准模板库 (STL) 中的函数对象支持运行时多态性,允许在程
STL 函数对象是否支持多态性?如何实现?
2024-04-25

golang函数在面向对象编程中的多态性实现

在 go 语言中,函数可以作为接口值存储,从而实现多态性:定义接口,规定一组方法签名。创建实现接口的类型,并为其实现这些方法。定义一个函数,接受接口值作为输入。函数中仅使用接口值的方法,而不考虑实际类型。使用不同类型的值调用函数,实现多态性
golang函数在面向对象编程中的多态性实现
2024-05-04

c++中可以通过指针或引用实现多态的原因是什么

这篇文章主要介绍c++中可以通过指针或引用实现多态的原因是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!引言:在c++中司空见惯的事情就是:可以通过指针和引用可以实现多态,而对象不可以。 那为什么?让我们来解开这
2023-06-14

通过scanf函数在C语言中实现数据输入及处理

标题:使用scanf函数实现C语言中的数据输入与处理在C语言中,使用scanf函数可以方便地实现数据的输入与处理。scanf函数是C语言标准库中的一个函数,其作用是从标准输入(通常是键盘)读取数据,并将读取到的数据按照指定的格式存储到指定
通过scanf函数在C语言中实现数据输入及处理
2024-02-25

SpringBoot多数据源配置并通过注解实现动态切换数据源

本文主要介绍了SpringBoot多数据源配置并通过注解实现动态切换数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

C++ 虚拟函数深入剖析:类型擦除与多态实现

c++++虚函数实现多态,通过类型擦除将对象类型信息分离,使编译器仅识别公共接口。虚指针表存储虚函数地址,当基类指针指向派生类对象时,指向派生类虚指针表的派生类指针将替代基类指针指向的虚指针表,从而实现多态。C++ 虚拟函数深入剖析:类型擦
C++ 虚拟函数深入剖析:类型擦除与多态实现
2024-04-29

vue3怎么通过render函数实现菜单下拉框

这篇文章主要介绍“vue3怎么通过render函数实现菜单下拉框”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3怎么通过render函数实现菜单下拉框”文章能帮助大家解决问题。技术方案先写一个
2023-07-06

C#中怎么通过运算符重载实现复数运算

今天就跟大家聊聊有关C#中怎么通过运算符重载实现复数运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#运算符重载实现复数运算的由来:函数的重载——同名函数,不同的参数(包括参数个
2023-06-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录