多态相关知识

多态相关知识1 如果函数的调用,在编译阶段就可以确定函数的调用地址,并产生代码,就是静态多态(编译时多态),就是说地址是早绑定的。C++动态多态性是通过虚函数来实现的,虚函数允许子类(派生类)重新定义父类(基类)成员函数,而子类(派生类)重新定义父类(基类)虚函数的做法称为覆盖(override),或者称为重写。取一个对象的地址(指针或引用),并将其作为基类的地址来处理,这种称为向上类型转换。c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。 阅读详情

在 C++ 中,“多态(Polymorphism)”是一种面向对象编程的核心特性,它允许相同的接口在不同的对象上表现出不同的行为。

✅ 多态的定义

多态(Polymorphism) 是指在不同类的对象上对同一个函数调用,表现出不同的行为(即不同的实现)。

简单来说:

同一个函数调用,可以执行不同的函数体。

🔢 C++ 多态的分类

C++ 中的多态有两种:

类型 说明 示例特征
编译时多态 在编译阶段就能确定调用哪个函数 函数重载、运算符重载
运行时多态 在运行时根据对象的实际类型决定调用哪个函数 虚函数、继承、多态指针/引用
📌 编译时多态(静态多态)

编译器在编译期间确定要调用的函数。

例子:函数重载
#include
void print(int x) {
std::cout << "int: " << x << std::endl;
}
void print(double x) {
std::cout << "double: " << x << std::endl;
}
int main() {
print(10); // 调用 int 版本
print(3.14); // 调用 double 版本
}

📌 运行时多态(动态多态)

通过继承 + 虚函数实现,在运行时根据实际对象类型调用对应的方法。

条件:

使用 继承(基类和派生类)

基类中的函数被标记为 virtual

使用 基类指针或引用 指向 派生类对象

例子:
#include
using namespace std;

class Animal {
public:
virtual void speak() { // 虚函数
cout << “Animal speaks” << endl;
}
};

class Dog : public Animal {
public:
void speak() override {
cout << “Dog barks” << endl;
}
};

int main() {
Animal* a = new Dog(); // 用基类指针指向派生类对象
a->speak(); // 调用 Dog 的 speak,而不是 Animal 的
delete a;
}

输出:

Dog barks

✅ 多态的好处

可扩展性强:添加新的类,只需重写方法即可。

解耦:使用基类指针或引用编程,而不关心具体对象类型。

提高代码复用性和灵活性

如果你想进一步了解虚函数表(vtable)、纯虚函数、抽象类等,我也可以继续帮你深入解析。是否需要?

多态相关知识2 在设计时,常常希望基类仅仅作为其派生类的一个接口。这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象。同时创建一个纯虚函数允许接口中放置成员原函数,而不一定要提供一段可能对这个函数毫无意义的代码。做到这点,可以在基类中加入至少一个纯虚函数(pure virtual function),使得基类称为抽象类(abstract class).建立公共接口目的是为了将子类公共的操作抽象出来,可以通过一个公共接口来操纵一组类,且这个公共接口不需要事先(或者不需要完全实现)。可以创 阅读详情

相关推荐

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9431

【C++】多态相关知识详细梳理

1.多态是由虚表来实现的。2.虚函数重写是通过覆盖父类拷贝过来的虚表中的对应函数地址来实现的。并且在调用过程中是使用父类的接口和子类的方法。3.父类和子类的虚表并不是同一个。派生类中也可以有多个虚表地址,例如多继承。4.虚表地址存在对象的头四个字节处(32位)。5.重载,重写以及重定义容易混淆,需要理清。6.多态是在运行时确定的,属于动态绑定。7.可以定义纯虚函数实现抽象类强制派生类重写。(不重写就不要定义虚函数)

fulufulucode的博客 977

别再死记硬背了!用TwinCAT 3手把手教你配置EtherCAT伺服驱动的PDO映射(DS402协议)

本文详细介绍了如何使用TwinCAT 3配置EtherCAT伺服驱动的PDO映射(DS402协议),涵盖环境准备、设备扫描、PDO映射实战及高级技巧。通过具体操作步骤和常见问题排查,帮助工程师快速掌握EtherCAT通信配置,提升运动控制系统的效率和稳定性。

weixin_29185493的博客 321

【C++】多态介绍 and 大厂常考多态的相关知识

本文介绍多态的相关知识,在此的基础上讲解大厂常考多态的内容。

就业知识博客 912

【计算机组成原理】实验4:单周期CPU(Verilog)中海大

【计算机组成原理】实验4:单周期CPU

m0_63023532的博客 3659

浅谈向量检索

文章目录浅谈向量检索背景什么是向量什么是向量检索距离度量检索方法ANN的基本思路举个容易理解栗子举个正常的例子具体算法树方法KD-TreeAnnoyHash方法LSH 算法矢量量化方法乘积量化码本的建立码字搜索算法倒排乘积量化临近图方法HNSW 算法朴素想法Delaunay算法NSW 主要思想NSW构图NSW查找参考 浅谈向量检索 背景 索引一直被认为是检索引擎最重要的组成部分,之所以数据库能够快速的查询出来结果。系统设计中很多常见的多种数据结构都是为了快速命中索引设计的, 比如 红黑树、跳跃表、倒排索引、

qq_42828391的博客 6552

多态的相关知识

多态/虚函数

2301_80001343的博客 755

创建动态代理对象bean,并动态注入到spring容器中

使用过Mybatis的同学,应该都知道,我们只需要编写mybatis对应的接口和mapper XML文件即可,并不需要手动编写mapper接口的实现。这里mybatis就用到了JDK动态代理,并且将生成的接口代理对象动态注入到Spring容器中。 这里涉及到几个问题。也许有同学会有疑问,我们直接编写好类,加入@Component等注解不是可以注入了吗?或者在配置类(@Configuration)...

lichuangcsdn的博客 3万+

C++多态相关知识总结

多态 多态是指在不同继承关系的类对象,去调用同一函数,产生了不同的行为。 构成多态的条件: 1.必须通过基类的指针或者引用调用虚函数 2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写 virtual关键字修饰的类成员函数称为虚函数。 虚函数的重写: 派生类中有个函数和基类中的一个函数满足以下条件可以重写函数: 1.函数名相同 2.返回值类型相同 3.参数列表相同 注意:如果基类成员函数前有virtual关键字,而子类成员函数前没有也构成重写。 调用虚函数的类型必须为指针或者引用。如下这样:

loreal8的博客 220

Android11 关于三方应用获取su权限

SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。

sinat_37429535的博客 1901

Coze 上 OpenClaw 完整使用攻略(零代码 + 24 小时在线 + 飞书 / 微信接入)

Coze(扣子)是目前国内零门槛部署 OpenClaw 最友好的平台,无需服务器、不用命令行,5 分钟即可拥有可执行本地 / 云端任务的 AI 助手,还能一键发布到飞书、微信、钉钉等 IM。

hy行者勇哥的博客 2921

多态方面相关的知识

封装 封装是管理复杂程度的核心手段 调用者不需要考虑实现细节;实现者需要实现细节; 封装的意义是:降低了使用者的使用成本 多态

weixin_51062428的博客 276

ROSTCM6+Gephi的网络语义分析详细教程(附案例实战)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件,可用于各种图形和网络的可视化和探索,是最受欢迎的网络可视化软件之一。

m0_64336780的博客 1万+

多态相关知识点

ps:方法重写小技巧,直接打字打出父类的方法名,回车就可以(如下图)三、多态中成员(包括成员变量和成员方法)的访问特点。有继承 有方法重写 有父类引用指向子类对象。

长安1108的博客 137

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java多态相关知识点

定义 多态: 是指同一行为,具有多个不同表现形式。 实现多态的前提 继承extends或者实现implements【二选一】 方法的重写【意义体现:不重写,无意义】 父类引用指向子类对象【格式体现】 多态的格式 父类类型 变量名 = new 子类对象; 变量名.方法名(); //父类类型:指子类对象继承的父类类型,或者实现的父接口类型 Fu f = new Zi(); f.method(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写 后方法

qwe7150849的博客 275

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA多态性相关知识,看这篇就足够了

希望通过《学JAVA,看这篇就足够了》系列,让读者们深刻理解JAVA相关知识。从小白到大牛,需要一步一步 面向对象特征之三:多态性 1.理解多态性:可以理解为一个事物的多种形态。 2.何为多态性: 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用) 3. 多态的使用:虚拟方法调用 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。 总结:编译,看左边;运行,看右边。 4.多态性的使用前提: ① 类的继承关系 ② 方法的重...

Ye_mulin的博客 530

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python 多态应用_python 多态这一部分的知识点相关应用

类型这块type 一个对象的时候,这个对象的类型,总是这个对象所属的类type任何一个类,它的类型都是type,type是所有数据类型和类的鼻祖type的类型是它本身 type = type(type)函数的类型就是函数python是一种动态语言,一个鸭子类型举例:动态python变量,在赋值的时候,赋值号(=)右边的数据类(list,set,float等)对象是什么类型,他就是什么类型a. 常...

weixin_39856055的博客 127

C++多态相关知识

       1:每一个类都有虚表   2:虚表可以继承,如果子类没有重写虚函数,那么子类虚表中仍然会有该函数的地址,只不过这个地址指向的是基类的虚函数实现,如果基类有3个虚函数,那么基类的虚表中就有三项(虚函数地址),派生类也会虚表,至少有三项,如果重写了相应的虚函数,那么虚表中的地址就会改变,指向自身的虚函数实现,如果派生类有自己的虚函数,那么虚表中就会添加该项。   3:派生类的虚表中虚...

sinat_42721727的博客 271

继承 多态的相关知识

一 继承 在php中,使用extends实现继承。 作用:如果我们不使用继承,就要写很多重复的代码。 二 继承的构造方法 1 子类继承父类时,子类没有构造方法,实例化子类对象时,会执行父类的构造方法。子类如果有自己的构造方法,实例化子类对象时,只会自动执行子类自己的构造方法。 2 子类的构造方法有两个参数,所以当我们实例化子类对象时,必须传递两个参数。 三 继承中的保护 protected:受保护...

weixin_45595218的博客 171

多态的相关知识学习

多态的相关学习

为以后打基础吧 143

JAVA中多态相关知识

例如:父类为Animal子类为Dog和Cat,Animal类中有吃东西的方法,Dog和Cat类实现的吃东西的方法就是不一样的,因为狗和猫喜欢吃的东西是不一样的。将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的 方法,此时:将父类引用再还原为子类对象即可,即向下转换。是Java中的一个二元操作符,用于检测左侧的对象是否为右侧类或接口的实例。它返回一个布尔值,如果对象是指定类的实例或者是这个类的子类的实例,则返回。向上转型的缺陷:不能调用到子类特有的方法。

2502_91833766的博客 337

多态的一些相关知识

多态

weixin_64651338的博客 98

java中多态的的知识点_Java中多态相关知识点

多态1.多态概述同一个对象在不同时刻表现出的不同形态多态的前提和体现:有继承/实现关系有方法重写有父类引用指向子类对象(Animal a = new Cat();)2.多态中的成员访问特点成员变量:编译看左边,执行看右边成员方法:编译看左边,执行也看左边为什么成员变量和成员方法的访问不一样呢?因为成员方法有重写,而成员变量没有.示例:父类package com.itheima_06;public ...

weixin_32002013的博客 208
上一篇: 如何实现一个自定义的STL容器类,需要注意哪些方面
下一篇: 解释一下C++中内存屏障和它的作用——多线程编程
C++_girl
博客等级 码龄7年 32粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值