同名覆盖引发的问题

news2024/12/27 14:23:48

父子间的赋值兼容

子类对象可以当作父类对象使用 (兼容性)

  • 子类对象可以直接赋值给父类对象
  • 子类对象可以直接初始化父类对象
  • 父类指针可以直接指向子类对象
  • 父类引用可以直接引用子类对象

当使用父类指针 (引用) 指向子类对象时

  • 子类对象退化为父类对象
  • 只能访问父类中定义的成员
  • 可以直接访问被子类覆盖的同名成员

特殊的同名函数

子类中可以重定义父类中已经存在的成员函数

这种重定义发生在继承中,叫做函数重写

函数重写是同名覆盖的一种特殊情况

思考

当函数重写遇到赋值兼容会发生什么?

问题分析

编译期间,编译器只能根据指针的类型判断所指向的对象

根据赋值兼容,编译器认为父类指针指向的是父类对象

因此,编译结果只可能是调用父类中定义的同名函数

在编译这个函数的时候,编译器不可能知道指针 p 究竟指向了什么。但是编译器没有理由报错。于是,编译器认为最安全的做法是调用父类的 print 函数,因为父类和子类肯定都有相同的 print 函数

问题

编译器的处理方法是合理的吗?是期望的吗?

小结

子类对象可以当作父类对象使用 (赋值兼容)

父类指针可以正确的指向子类对象

父类对象可以正确的代表子类对象

子类中可以重写父类中的成员函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/918603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(CVPR-2023)用于步态识别的动态聚合网络

用于步态识别的动态聚合网络 paper题目:Dynamic Aggregated Network for Gait Recognition paper是BIT发表在CVPR 2023的工作 paper地址:链接 Abstract 步态识别有利于多种应用,包括视频监控、犯罪现场调查和社会安全等。然而,步…

freertos之优先级实验

优先级的介绍 优先级的取值范围是:0~(configMAX_PRIORITIES – 1),数值越大优先级越高。 FreeRTOS会确保最高优先级的、可运行的任务,马上就能执行。 对于相同优先级的、可运行的任务,轮流执行 任务的执行顺序 对于同优先级的任…

工作流程引擎之flowable(集成springboot)

0、背景 现状:公司各部门业务系统有各自的工作流引擎,也有cross function的业务在不同系统或OA系统流转,没有统一的去规划布局统一的BPM解决方案,近期由于一个项目引发朝着整合统一的BPM方案,特了解一下市面上比较主流…

spring之Spring Security - 实现身份验证与授权

Spring Security - 实现身份验证与授权 标题: Spring Security - 实现身份验证与授权摘要:引言:词汇解释:详细介绍:实现基本的身份验证与授权解释概念:代码示例:注意事项: 定制化认证与授权流程解释概念:代码示例:注意事项: 集成OAuth2认证解释概念:代码示例:注意事项: 总结:参…

【微信公众号】微信公众号网页授权:

文章目录 一、添加业务域名二、前端授权获取code【1】参数说明:【2】静默授权与显式授权的区别:【3】前端获取code的代码: 三、后端获取openid(或unionid)【1】获取openid:【2】获取unionid 四、unionid与openid的区别 在微信公众…

宠物店小程序制作

随着移动互联网的快速发展,宠物店经营者们也纷纷意识到线上市场的潜力。通过开发一款宠物小程序,你可以将你的宠物店推向线上的新机遇! 【乔拓云】是一个专业的小程序开发平台,它提供了一套简单易用的工具,帮助你快速创…

JavaSE 方法

定义: 程序执行的最小单元 什么时候用到方法:需要重复运行一段代码的时候; 使用方法的好处:提高代码的可重用性、可维护性 格式: // 一、最简单格式 public static void 方法名(){// 方法体 }// 二、带参数的格式…

炫我为北京轻工技师学院提供渲染私有云系统解决方案

北京轻工技师学院作始建于1964年,是国家级重点学校。学院开设有计算机动画制作、计算机网络应用、电气自动化设备安装与维修、电子技术应用、工业机器人应用与维护等16个专业,本次项目的交付实施涉及该学院的一个重要项目。 ▲北京轻工技师学院 图源网…

【SpringSecurity】五、UserDetails接口和UserDetailsService接口

文章目录 1、SpringSecurity原理2、UserDetails接口3、UserDetailService接口4、权限配置 1、SpringSecurity原理 Spring Security是做安全访问控制,对所有进入系统的请求进行拦截,并做校验,这可以通过Filter或者AOP实现,Spring …

MySQL 条件查询 Emoji 表情符号却返回多条数据【包含其它表情符号】的问题解决 - COLLATION 字符序的选择

1、问题出现 在APP客户端输入搜索文章的关键字时,不小心输入来了一个 emoji 表情符号,提示出错了,在后台查询错误日志信息,提示查询出现了2条相同的记录: Caused by: org.hibernate.NonUniqueResultException: query …

【Java 高阶】一文精通 Spring MVC - 数据格式化器(六)

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

python - 编程中【工厂模式】和【单例模式】区别以及代码示例详解

一. 概念 工厂模式和单例模式都是面向对象编程中常用的设计模式。 工厂模式(FactoryPattern):是一种创建型模式,它提供了一种方法来创建对象,而不需要暴露对象的创建逻辑。这种模式通过定义一个工厂类,通…

优化生产流程:数字化工厂中的OPC UA分布式IO模块应用

背景 近年来,为了提升在全球范围内的竞争力,制造企业希望自己工厂的机器之间协同性更强,自动化设备采集到的数据能够发挥更大的价值,越来越多的传统型工业制造企业开始加入数字化工厂建设的行列,实现智能制造。 数字化…

归一化的作用,sklearn 安装

目录 归一化的作用: 应用场景说明 sklearn 准备工作 sklearn 安装 sklearn 上手 线性回归实战 归一化的作用: 归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度(如KNN) 应用场景说明 1)概率模型不需要归一化&#xff…

强化历程5-Java并发系列(2023.8.23)

文章目录 强化历程5-Java并发系列(2023.8.23)1 Java多线程1.1 Java中多线程有几种实现方式?1.2 那么Runnable和Callable都可以实现多线程,他们有什么区别?1.3 采用实现Runnable和Callable接口方式和采用继承Thread类方式各有什么好处?1.4 Java如何停止…

【数据结构与算法】—— 手撕红黑树

目录 (一)红黑树的定义 1、红黑树的引入 2、红黑树的概念 3、红黑树的性质 (二)红黑树的操作 1、红黑树节点的定义 2、红黑树的插入操作 1️⃣ 思路 2️⃣ 代码实现 3、红黑树的删除操作(了解) …

Compose - 基本使用

一、概念 1.1 Compose优势 由一个个可以组合的Composable函数拼成界面,方便维护和复用。布局模型不允许多次测量,提升了性能。Compose可以和View互操作(相互包含对方)。 1.2 声明式UI APP展示的数据绝大多数不是静态数据而是会…

An easy problem

一、题目 we define f(A) 1, f(a) -1, f(B) 2, f(b) -2, … f(Z) 26, f(z) -26; Give you a letter x and a number y , you should output the result of yf(x). Input On the first line, contains a number T.then T lines follow, each line is a case.each case …

多线程基础篇(包教包会)

文章目录 一、第一个多线程程序1.Jconsole观察线程2.线程休眠-sleep 二、创建线程三、Thread类及常见方法1. Thread 的常见构造方法2. Thread 的几个常见属性3. 启动线程 - start4. 中断线程5. 等待一个线程 四、线程状态五、线程安全问题(synchronized)(重点&#…

基于React实现日历组件详细教程

前言 日历组件是常见的日期时间相关的组件,围绕日历组件设计师做出过各种尝试,展示的形式也是五花八门。但是对于前端开发者来讲,主要我们能够掌握核心思路,不管多么奇葩的设计我们都能够把它做出来。 本文将详细分析如何渲染一…