【C++学习笔记(二十一)】之基类,子类的类型转换

2023-11-08

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. 普通基类,子类的转换

       子类是由继承于基类,通常子类的内容要比基类多一些,因此子类开辟的内存要比基类大一些。

(一) 基类 -> 子类(向下类型转换)

       当我们要把基类强转为子类时,由于子类的内存空间一般大一些,那么通过强转,当指针在基类的空间中移动时,如果超过了基类的空间大小,那么就有可能出现错误。

(二)子类 -> 基类(向上类型转换)

       当把子类强转为基类时,由于子类的空间大于基类的空间,那么不论指针如何移动,都不会超过子类的内存空间大小,因此是安全的。

二. 多态基类,子类的转换

       当发生了多态时,如 Animal是基类,Cat是子类

              Animal * animal = new Cat

       那么 new Cat 就已经申请了Cat子类大小的空间了,不论是向上类型转换还是向下类型转换,都是安全的。

       如:向下类型转换

              Cat * cat = (Cat *) animal

       都是安全的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++学习笔记(二十一)】之基类,子类的类型转换 的相关文章

  • 输出指令——Console.WriteLine()

    在Console WriteLine 指令中 用 0 1 来表示需替换的变量位置 例子如下 static void Main string args int myInteger string myString myInteger 17 my
  • 解决VS2022版出现“‘cl‘ 不是内部或外部命令”的问题

    在命令行中运行Visual Studio 2022编译器的命令为 cl 但在执行的时候 有可能产生错误 cl 不是内部或外部命令 也不是可运行的程序 或批处理文件 错误原因是系统的环境变量配置有问题 需要手动修改系统环境变量 这里使用两种方
  • 【C++习题笔记】谭浩强C++程序设计(第三版)第五章

    1 用筛法求100之内的素数 筛法又称为筛选法 具体做法是 先把N个自然数按次序排列起来 1不是质数 也不是合数 要划去 第二个数2是质数留下来 而把2后面所有能被2整除的数都划去 2后面第一个没划去的数是3 把3留下 再把3后面所有能被3
  • 「C++学习笔记」面向.Net Core的(C++)CLR类库非专业入门(+使用Opencv)

    关键词 C CLR Net Core Net Famework Opencv C 目录 什么是CLR类库 本文说明 创建Demo程序 调用dll 通过项目引用 通过dll文件引用 其他还没完全清楚的坑 有关C CLI这块的资料真的很少而且都
  • C++多态的方式:重写和重载

    引用 windows程序员面试指南 重写和重载 C 多态的实现方式包括重载和重写 重写 重写是动态的多态 通过C 的虚函数实现 重载 重载是静态的多态 在同一个作用域内 具有相同函数名 不同的形参个数或者形参类型实现重载 和返回值类型无关
  • QT---QMainWindow初始化顺序

    C 构造 先子类以及成员 再父类以及成员 析构的顺序就是构造顺序的逆序 就是先析构父类 再析构子类 先析构本类 再析构本类的成员 QT 1 控件类 gt 控件提升类 gt QMainWindow类 2 子窗体的构造函数中初始化了父窗体的pa
  • Java面向对象三大特性(封装、继承、多态)

    文章目录 前言 一 封装 1 封装的概念 2 private实现封装 3 getter和setter方法 4 封装的好处 二 继承 1 继承的概念 2 extends实现继承 3 super 关键字 Object 4 访问权限 1 priv
  • C++绑定器和函数对象

    C 绑定器和函数对象 简介 C STL中的绑定器 bind1st operator 的第一个形参变量绑定一个确定的值 bind2nd operator 的第二个形参变量绑定一个确定的值 C Boost库 C 的Boost库中引入了bind绑
  • 面试官问,重载(overload)和重写(override)的区别?

    重载 overload 方法重载是指同一个类中的多个方法具有相同的名字 但这些方法具有不同的参数列表 即参数的数量或参数类型不能完全相同 重写 override 方法重写是存在子父类之间的 子类定义的方法与父类中的方法具有相同的方法名字 相
  • C++多态概念和意义

    目录 一 什么叫重写 二 面向对象期望的重写 1 示例分析 2 所期望的重写 三 多态的概念和意义 1 多态的概念 2 C 如何支持多态概念 3 多态内部运行剖析 4 多态的意义 5 修改示例代码 四 静态联编和动态联编 五 小结 一 什么
  • C++类的三大特性之继承

    目录 一 继承的概念与使用 lt 1 gt 什么是继承 lt 2 gt 如何使用 二 基类与派生类间的转换 三 继承的作用域 四 派生类的默认成员函数 lt 1 gt 构造函数 lt 2 gt 拷贝构造 lt 3 gt 赋值运算符重载 lt
  • 指针的删除

    1 在链表中 将某个指针delete 指向该指针的那个指针的next 不会自动赋值为NULL 需要手动赋值 2 删掉 某指针所指向的内存 该指针仍然可以使用 下面是一个带头指针的单向链表 void Stack Pop int value i
  • C#学习笔记--关于银行存取款的小实验

    C 面向对象程序设计 编程模拟实现个人银行的存款业务 要求 1 提供两种账户 活期存款账户CheckingCustom和定期存款账户FixedCustom 2 创建活期账户时 必须提供账户名和开户金额 而账号则根据存款分类自动生成 3 不论
  • C++deque容器deque 排序

    C deque容器deque 排序 功能描述 利用算法实现对deque容器进行排序 include
  • java学习笔记——第八章 类和方法(二)

    8 4使用方法 java中的方法不能独立存在 他必须属于一个类或者一个对象 因此方法也不能像函数那样被独立执行 因此必须使用类或对象来调用 总结 方法不能独立定义 方法只能在类体中定义 逻辑上讲 方法要么属于该类本身 要么属于该类的一个对象
  • 设计模式的 C++ 实现---原型模式

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 工厂方法模式 二 抽象工厂模式 一 抽象工厂模式 二 前言 原型模式指直接用一个已经存在的对象来创建一个新的对象 然后对新对象进行稍微修改即可 类似复制的操作
  • 什么是多态?对于多态的理解....

    什么是多态 我们都知道面向对象有四个基本特性 抽象 封装 继承 多态 概括可以理解为 抽象 封装 继承 是多态的基础 多态是抽象 封装 继承的表现 多态 是Java中非常重要的一部分 简单理解 不同类的 对象 对同一消息 做出了不同的响应就
  • C++模板-33-类模板和函数模板的区别

    这篇开始学习类模板相关知识 本篇主要学习什么是类模板 还有类模板和函数模板的区别 1 类模板语法 template
  • C++类的构造函数

    构造函数 构造函数的概念 我们有一个Date类 class Date public void Init int year int month int day year year month month day day void Print
  • C++基础之纯虚函数

    一 纯虚函数的定义 纯虚函数是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 而把它声明为纯虚函数 它的实现留给该基类的派生类去做 这就是纯虚函数的作用 C 中的纯虚函数 一般在函数名后使用 0作为此类函数的标志 前面

随机推荐

  • 静态链接和动态链接

    静态链接 由于在我们实际的开发中 不可能将他们都放在一个文件中执行 所以将他们生成 o文件进行 从而要将他们进行链接 从而实现一个可以执行的程序 这个过程就是静态链接 静态库 是由多个多个 o文件压缩打包形成的一个文件 静态链接的优点 他在
  • linux的判断命令test之数值判断

    判断命令test一般用于脚本当中 可以简写为中括号 其会对跟随的条件进行判断 一般可以分为数值判断 字符串判断和文件判断 语法格式为test 判断条件 或 判断条件 注意中括号 与判断条件之间必须存在空格 还需注意判断条件的判断符号与比较值
  • 【Ubuntu】手把手教你打造 【VS Code + Cmake + C/C++】 开发环境

    下载安装VSCODE CMAKE Cmake安装请看我的这篇帖子 https blog csdn net TU Dresden article details 122373789 spm 1001 2014 3001 5501 VScode
  • shell基础知识

    shell基础知识 脚本语言 脚本是短小的 用来让计算机完成一系列工作的程序 这类程序可以用文本编辑器修改 不需要编译 通常是解释运行的 是一个约定的标记 告诉系统其后路径所指定的程序即是解释此脚本文件的shell程序 shell变量 使用
  • maven集成单元测试插件

    1 maven不可允许忽略单元测试 2 引用jacoco version
  • 【Unity】 DoTween对UI进行DoFade操作存在问题及解决办法

    Unity DoTween对UI进行DoFade操作存在问题 Unity版本 5 2 5 4 当使用this GetComponent
  • 很好用的etcd可视化管理工具 etcdv3-browser

    etcd是一个高可用 强一致性的服务发现存储仓库的 是k8s里的一个基础组件 现在随着k8s的不断的被企业所使用 etcd也越来越被看好作为服务发现的好的组件之一 今天推荐的是一款用来对etcd进行管理的图形化管理工具 etcdv3 bro
  • (04)VTK移动模型,判断是否相交

    前言 在模型相交检测时 碰撞检测 使用了重写vtkInteractorStyleTrackballActor函数的自己构建的交互器 实现检测鼠标按键 并显示不同颜色在不同相交情况时 方法 重写 vtkInteractorStyleTrack
  • fastboot通用线刷工具_[教程] 小米手机解BL锁、线刷详细教程,适用于小米全系列手机...

    这几天看到论坛里很多人在问怎么线刷 下面我就做个详细的线教程大家看一下高手别喷我哈 此教程只适合刷官方MIUI包 进入正题 第一步 解BL锁 1 浏览器打开http www miui com unlock done html点击立即解锁 然
  • QT多线程

    本文档是自己所整理的一份文档 部分是原创 还转贴了网上的一此资料 已经标明了 难点是多线程的编写 是有源代码的 大家可以作为参考 用到的知识是视频采集 压缩解压 xvid 实时传输 jrtp 基于qt库所写的 由于本人对qt下的多线程还不很
  • Ubuntu20.04安装RabbitMQ,并配置远程调用,详细教程

    一 简介 RabbitMQ是一种在Erlang OTP中实现的开源消息队列软件 它实现了AMQP 高级消息队列协议 并使用插件与流行的消息传递解决方案进行通信 如MQTT 消息队列遥测传输 面向文本流的消息传递协议等 在本文中 您将了解如何
  • Linux中Shell脚本命令替换和grep接收变量作为参数

    需求 再服务器上启动Springboot项目上 使用Shell脚本作为启动脚本去执行 然后调用jar包 在本项目 需要从配置文件application properties中去获取端口号 然后根据端口号去获取进程的PID 问题 第一 如果获
  • 机器学习面试150题:不只是考SVM xgboost 特征工程(101-153)附送【名企AI面试100题】

    101 你意识到你的模型受到低偏差和高方差问题的困扰 应该使用哪种算法来解决问题呢 为什么 低偏差意味着模型的预测值接近实际值 换句话说 该模型有足够的灵活性 以模仿训练数据的分布 貌似很好 但是别忘了 一个灵活的模型没有泛化能力 这意味着
  • 服务器防御DDoS的方法,一文解决DDoS攻击

    近来 DDoS攻击越来越严重 香奈儿韩国分公司在黑客入侵其数据库后发表了道歉声明 表示公司已封锁黑客攻击背后的IP地址 并聘请一家网络安全公司调查此事 广大的网站用户应该采取怎样的措施进行有效的防御呢 下面超级科技就介绍一下防御DDoS攻击
  • 2023前端面试题(第一版持续更新)

    CSS display none 和visibility hidden 的区别是什么 display none 隐藏对应的元素 在文档布局中不再给它分配空间 它各边的元素会合拢 就当他从来不存在 visibility hidden 隐藏对应
  • Unity SpriteAtlas(图集)自动生成工具

    Unity SpriteAtlas 图集 自动生成工具 什么是图集 图集是一种将多个纹理合并为一个组合纹理的资源 可以调用此单个纹理来发出单个绘制调用而不是发出多个绘制调用 能够以较小的性能开销一次性访问压缩的纹理 为什么要打图集 减少Dr
  • Activiti工作流使用

    Activiti工作流 熟悉能用即可 https github com Activiti Activiti
  • java 企业工程管理系统软件源码 自主研发 工程行业适用

    工程项目管理软件 工程项目管理系统 对建设工程项目管理组织建设 项目策划决策 规划设计 施工建设到竣工交付 总结评估 运维运营 全过程 全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一 系统管理 1 数据字典 实现对数据字典标签
  • Ubuntu PCL安装过程之中遇见到问题

    详细的PCL安装过程在之前的文章之中有过记录 但是我一直忽略了一个问题 导致安装过程之中一直出现问题 在编译PCL 源码的过程如下 cd pcl mkdir build cd build cmake D CMAKE BUILD TYPE N
  • 【C++学习笔记(二十一)】之基类,子类的类型转换

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 普通基类 子类的转换 子类是由继承于基类 通常子类的内容要比基类多一些 因此子类开辟的内存要比基类大一些 一 基类 gt 子类 向下类型转换 当我们要把基类强转为子类时 由于子类