也谈多态--由override和new说起

C++多态机制深度解析:从虚函数表到实战应用 多态是面向对象编程的核心概念,它允许同一接口在不同上下文中表现出不同行为,通过动态绑定机制实现。其技术价值在于提升代码的抽象能力、可扩展性和可维护性,是构建模块化系统的基石。在C++中,多态主要通过虚函数和继承机制实现,编译器会为包含虚函数的类生成虚函数表,对象通过虚函数表指针在运行时确定调用哪个函数。这一机制广泛应用于图形界面框架、插件系统和算法策略等场景,例如在Qt框架中实现自定义控件绘制,或在OpenCV中处理图像算法。理解虚函数表的内存布局和动态绑定原理,能帮助开发者编写更高效、更灵活的代码,同时避 阅读详情

先看个例子:

using System;

namespace tempname
{

 public class GrandClass//基类
 {
  public GrandClass()
  {
   Console.WriteLine("In GrandClass.Constructor");
  }
  public virtual void Method()//用virtual才可以在子类中用override,而new不需要这样
  {
   Console.WriteLine("In GrandClass.Method()");
   Console.WriteLine("1");
  }
 }

 public class ParentClass:GrandClass//继承基类,看看override状态
 {
  public ParentClass()
  {
   Console.WriteLine("In ParentClass.Constructor");
  }
  override public void Method()//使用override,是说把基类的方法重新定义
  {
   Console.WriteLine("In ParentClass.Method() use override");
   Console.WriteLine("2");
  }

 }

 public class NewParentClass:GrandClass//继承基类,看看new状态
 {
  public NewParentClass()
  {
   Console.WriteLine("In NewParentClass.Constructor");
  }
  new public void Method()//使用new,不是说用到基类的方法,而是重新定义一个子类方法,只不过,方法名称与基类相同
  {
   Console.WriteLine("In NewParentClass.Method()");
   Console.WriteLine("3");
  }
 }


 public class testclass
 {
  static void Main()
  {
   GrandClass gclass = (GrandClass)new ParentClass();
   gclass.Method();

   GrandClass gclass1 = (GrandClass)new NewParentClass();
   gclass1.Method();

   NewParentClass NewParent1 = new NewParentClass();
   NewParent1.Method();

   ParentClass parentClass = new ParentClass();
   parentClass.Method();
  }
 }
}

编译,运行输出
D:/>csc inherit.cs
Microsoft (R) Visual C# .NET 编译器版本 7.10.6310.4
用于 Microsoft (R) .NET Framework 版本 1.1.4322
版权所有 (C) Microsoft Corporation 2001-2002。保留所有权利。


D:/>inherit
In GrandClass.Constructor
In ParentClass.Constructor
In ParentClass.Method() use override
2
In GrandClass.Constructor
In NewParentClass.Constructor
In GrandClass.Method()
1
In GrandClass.Constructor
In NewParentClass.Constructor
In NewParentClass.Method()
3
In GrandClass.Constructor
In ParentClass.Constructor
In ParentClass.Method() use override
2

由上得出两点结论:
1> 使用 new 时并没有隐藏基类的同名方法,只要使用不同的句炳来调用即可证明
2> 使用 override 直接重写了基类的方法,即"覆盖"

C++多态核心机制:虚函数表与动态绑定原理详解 多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型来调用相应的方法,从而实现“一个接口,多种形态”的灵活设计。其实现原理主要依赖于虚函数和动态绑定机制。编译器会为包含虚函数的类生成虚函数表,每个对象通过虚函数表指针来访问正确的函数地址。这种机制虽然会引入轻微的性能开销,但极大地提升了代码的可扩展性和可维护性,是构建复杂软件系统的基石。在C++中,多态广泛应用于设计模式如工厂模式、策略模式等场景,通过基类指针或引用操作派生类对象,实现模块间的松耦合。理解虚函数表、动态绑定以及相关注意事项( 阅读详情

相关推荐

C++多态核心机制:从虚函数表到动态绑定的深度解析与实践指南

多态是面向对象编程的核心概念,它允许通过统一的接口处理不同的数据类型,实现代码的灵活性和可扩展性。其核心原理基于虚函数表(vtable)和虚函数表指针(vptr)机制,在运行时通过动态绑定确定具体调用的函数,从而支持‘一个接口,多种实现’。这种机制在构建大型软件系统时至关重要,能有效降低模块间的耦合度,提升代码的可维护性。在C++中,多态主要通过虚函数实现,并广泛应用于图形处理、算法策略、事件通知等场景。理解虚函数表的工作原理、对象内存模型以及构造函数/析构函数中的多态行为限制,是掌握C++多态的关键。本文

weixin_33968104的博客 350

【Unity】Abstract、Virtual、Override的实战应用与选择策略

本文深入解析了Unity中Abstract、Virtual和Override三个关键字的实战应用与选择策略。通过游戏状态管理、UI系统等具体案例,阐述了抽象类如何强制规范接口,虚方法如何提供灵活默认实现,以及重写如何实现多态。文章提供了清晰的决策流程图,帮助开发者在构建可扩展、易维护的Unity项目时做出正确选择。

weixin_29250573的博客 120

深入解析C++多态:从虚函数表到设计模式实践

多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型调用相应的方法,实现了‘一个接口,多种实现’的灵活设计。其底层原理依赖于虚函数表(vtable)机制,每个包含虚函数的类都有一个虚函数表,对象通过虚函数表指针(vptr)在运行时动态绑定到正确的函数实现。这一机制虽然引入了一定的间接调用开销,但极大地提升了代码的可扩展性和可维护性,是构建大型、可复用软件系统的关键技术。在工程实践中,多态广泛应用于框架设计、插件系统、GUI开发等场景,例如在策略模式中,它使得算法能够独立于使用它的客户端而变

weixin_30776545的博客 425

C#非常重要基础之多态

前几天看了一位同志的博客,写的是关于他自己去支付宝面试的经历。过程大体是这样的:问答的时候,前面部分,作者都应答如流,说起自己经验如何之丰富,最后面试官问了作者一个问题:请简述多态的概念和作用。结果这位作者竟然说这么基础的问题还真不记得了,于是,面试失败。 其实多态,是个很基础的,也非常重要的概念,作为程序开发者,这些基础的概念必须非常牢固,在开发的过程中,才能得心应手。 同一操作作...

baibuwu8465的博客 140

C++多态深度解析:从虚函数表到内存布局与性能优化

多态是面向对象编程的核心概念,它通过动态绑定机制实现了同一接口对不同底层实现的调用。其原理基于虚函数表(vtable)和虚函数表指针(vptr),在运行时根据对象实际类型决定调用的具体函数,从而提升代码的可扩展性和可维护性。这一机制在C++中通过virtual关键字实现,为软件设计提供了强大的灵活性,广泛应用于图形系统、插件架构等需要运行时行为变化的场景。理解多态的底层实现,包括虚函数表的创建时机和内存布局,有助于优化性能并避免常见陷阱,如对象切片和虚析构函数缺失。本文深入探讨了C++多态的实现细节,结合虚

weixin_33721344的博客 379

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板)

本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。

potato的博客 1281

C++多态机制深度解析:从虚函数表到现代多态实践

多态是面向对象编程的核心概念,它允许通过统一的接口调用不同的实现,是实现代码复用和扩展性的关键技术。其原理基于动态绑定机制,在C++中主要通过虚函数表(vtable)和虚函数指针(vptr)实现,使得程序能在运行时根据对象实际类型决定调用哪个函数。这一机制极大地提升了代码的灵活性和可维护性,是设计模式如策略模式、工厂模式的基础。在图形渲染、插件系统、算法框架等场景中,多态能有效减少条件判断,支持开闭原则。本文聚焦C++多态的实现细节,深入探讨虚函数表机制、重写规范以及现代C++中如std::variant的

weixin_34245082的博客 426

ESD笔记(三)_常用ESD保护电路优缺点

根据ESD防护器件的TLP I-V特性我们可将ESD器件分为回滞类和非回滞类两种; 回滞类的ESD器件包括NPN三极管、栅极接地 NMOS ( GGNMOS, Gate-grounded NMOS )、可控桂(SCR, siliconcontrolled rectifier)等。 非回滞类的ESD器件包括二极管、二极管串、沟道工作的MOS管、PNP三极管、栅极接电源的PMOS(GDPMOS)等,与回滞类ESD器件相比,其TLP曲线没有负阻区的存在。 常用于ESD防护的器件包括PN结二极管、GGN

weixin_47139649的博客 1万+

C++多态核心原理深度解析:从虚函数表到设计模式实战

面向对象编程(OOP)是软件设计的核心范式,其核心思想在于通过封装、继承和多态来构建灵活、可复用的代码结构。多态作为OOP的关键特性,其原理在于允许程序在运行时根据对象的实际类型来调用相应的方法,这主要通过虚函数和动态绑定机制实现。这项技术的核心价值在于极大地提升了代码的扩展性和可维护性,使得程序能够在不修改现有代码的基础上,通过增加新的派生类来引入新的行为。在工程实践中,多态是构建插件系统、框架以及实现多种设计模式(如工厂模式、策略模式)的基石。理解其底层机制,特别是虚函数表(vtable)的工作原理,对

weixin_33863087的博客 319

子图同构之乌尔曼算法Ullmann Algorithm的python实现

给定两个图Ga​(子图)和Gb​(原图),其中Ga​有pa​个点和qa​条边,Gb​有pb​个点和qb​条边,其邻接矩阵分别为A和B。子图同构的关键在于找到一种从Ga​的点到Gb​的点的映射MM是一个pa​行pb​列的矩阵,且满足每行只有一个1(表示Ga​中的一个点唯一地映射到Gb​中的一个点),每列至多一个1(确保Gb​中的点不会被重复映射)。定义Ccij​MMBT,若在图Ga​。

weixin_42822813的博客 1974

nbiot和2g_浅谈NBIOT

一、什么是NBIOT?1、概念窄带物联网(Narrow Band Internet of Things, NB-IoT),NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,使用License频段,可采取带内、保护带或独立载波等三种部署方式,与现有网络共存。可直接部署于GSM网络、UMTS网络或LTE网络,以降低部署成本、实现平滑升级。2、NBIOT的特点和目标(1)超强覆盖:相对GPRS来...

weixin_39534100的博客 1704

深入解析C++虚函数:从多态原理到高效编程实践

在面向对象编程中,多态性是实现代码复用和扩展性的核心机制,它允许通过统一的接口操作不同类型的对象。其原理基于动态绑定,即在程序运行时根据对象的实际类型决定调用哪个函数实现。这一机制的技术价值在于显著降低了模块间的耦合度,提升了系统的可维护性和可扩展性,广泛应用于图形界面、游戏引擎、插件系统等需要灵活处理多种对象类型的场景。在C++中,虚函数是实现多态的关键,通过虚函数表(vtable)和虚函数指针(vptr)机制完成动态分发。理解虚函数的工作原理,包括其内存布局和调用开销,对于编写高效、安全的C++代码至关

weixin_34389926的博客 417

2025年人形机器人产业研究

人形机器人是一种模仿人类外形、动作和行为的机器人,旨在替代或辅助人类完成各种任务。其显著特征包括人类外形、动作模仿和智能交互能力。根据形态和功能,人形机器人可分为小型、中型、大型以及服务型、工业型、救援型和娱乐型等类别。发展历程经历了初始阶段、高度集成系统阶段和突破性进展阶段,技术不断进步。关键技术包括执行系统、控制系统和感知与交互系统,涉及机械结构、运动控制、平衡控制、任务执行控制以及感知与交互能力。主要研究方向包括外部仿人化和内部仿生,前者关注外观设计、动作控制和任务执行能力,后者致力于模拟人类核心机制

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 1570

C++多态机制深度解析:从虚函数表到设计模式实战

多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型调用相应的方法,从而实现‘一个接口,多种实现’的灵活设计。其原理主要基于虚函数和虚函数表机制,编译器为每个包含虚函数的类生成虚函数表,对象通过虚函数表指针动态绑定到正确的函数实现。这种机制的技术价值在于极大地提升了代码的可扩展性和可维护性,是构建松耦合架构、实现开闭原则的关键。在应用场景上,多态广泛应用于框架设计、插件系统、以及多种设计模式如工厂模式、策略模式的实现中。本文深入探讨了C++中虚函数、虚函数表的工作原理,并分析了对象切片、虚

weixin_34175509的博客 401

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 810

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1016

C++虚函数与纯虚函数:从多态原理到工程实践

在面向对象编程中,多态是实现代码复用和扩展性的核心技术,它允许使用基类接口操作派生类对象。其原理基于动态绑定机制,通过虚函数表(vtable)和虚函数指针(vptr)在运行时确定调用哪个函数,从而实现“一个接口,多种实现”。这种机制虽然引入少量性能开销,但为软件设计提供了强大的灵活性,是构建可扩展框架和库的基础。在工程实践中,虚函数常用于定义可选的扩展点,而纯虚函数则用于强制接口契约,确保派生类实现特定行为。本文通过实际案例,深入解析虚函数的工作原理、性能权衡及常见陷阱,帮助开发者掌握C++多态的核心机制与

weixin_33711647的博客 303

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1493

深入解析C++多态:从虚函数表到动态绑定的底层实现

多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型调用相应的方法。其实现原理基于虚函数表(vtable)机制,每个包含虚函数的类都有一个对应的虚函数表,存储着该类所有虚函数的地址。对象内部则包含一个指向该表的指针(vptr),通过间接寻址实现动态绑定。这种设计虽然带来一定的运行时开销,但极大地提升了代码的灵活性和可扩展性,实现了接口与实现的分离。在C++开发中,深入理解虚函数表的内存布局和动态绑定机制,对于编写高性能、可维护的代码至关重要,尤其是在设计复杂类层次结构和进行性能优化时。掌握

weixin_33812433的博客 380

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深入解析C++多态:从虚函数表到动态绑定原理与实践

多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型调用相应的方法,极大地提升了代码的灵活性和可扩展性。其实现原理主要依赖于虚函数表(vtable)和虚函数表指针(vptr),编译器通过这两个机制在运行时动态解析函数地址,从而实现动态绑定。这项技术的核心价值在于实现接口与实现的分离,支持设计模式如工厂方法和策略模式,是构建大型、可维护软件系统的基石。在C++中,多态广泛应用于框架设计、库开发和需要运行时行为变化的场景,例如GUI事件处理、插件系统等。理解虚函数表的内存布局、掌握动态绑定与静

weixin_30552811的博客 277

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++多态机制深度解析:从虚函数到设计模式实战

面向对象编程中的多态性是实现代码复用和扩展性的核心技术,它允许通过统一的接口操作不同类型的对象。其实现原理基于虚函数和动态绑定机制,编译器通过虚函数表在运行时确定具体调用的函数版本。这一机制为软件设计带来了巨大的灵活性,是实现开闭原则的关键。在工程实践中,多态广泛应用于框架设计、插件系统、算法策略替换等场景,例如工厂模式和策略模式都深度依赖多态实现。理解C++中的虚函数、纯虚函数、抽象类以及避免对象切片、正确使用虚析构函数等要点,是掌握多态编程的核心。本文通过具体代码示例,深入剖析多态的实现机制与常见陷阱。

weixin_30414305的博客 294

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++多态:虚函数与动态绑定原理及实战应用

多态是面向对象编程的核心概念,它允许通过统一的接口调用不同的实现,是实现代码复用和扩展性的关键技术。其原理基于虚函数和动态绑定机制,编译器为包含虚函数的类生成虚函数表,运行时通过虚表指针间接调用正确的函数实现。这一机制在C++中通过虚函数表实现,为设计模式如工厂模式和策略模式提供了基础,广泛应用于框架开发和大型软件系统中。理解虚函数表、动态绑定过程以及虚析构函数的作用,对于编写高效、可维护的C++代码至关重要。本文结合工厂模式和策略模式等实战场景,深入探讨了多态的实现原理、性能开销及常见避坑指南,帮助开发者

weixin_33894640的博客 414

C++多态机制深度解析:从虚函数表到动态绑定的实现原理

在面向对象编程中,多态是实现代码复用和扩展性的核心技术之一。其核心原理在于允许基类指针或引用在运行时动态调用派生类的具体实现,从而实现接口与实现的分离。这一机制主要通过虚函数和动态绑定实现,编译器会为每个包含虚函数的类生成虚函数表,对象内部则存储指向该表的虚函数表指针。从技术价值看,多态显著降低了代码耦合度,使得系统更容易维护和扩展,尤其在图形界面、游戏引擎和插件系统等场景中应用广泛。在C++中,虚函数是实现运行时多态的关键,而虚函数表则是支撑这一机制的底层数据结构。理解虚函数表指针的工作原理和动态绑定的触

weixin_30420305的博客 368
上一篇: 史未记,言已远
下一篇: 测试
killergo
博客等级 码龄23年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值