首页 > 其他分享 >cast类型强制转换

cast类型强制转换

时间:2023-10-16 21:00:42浏览次数:34  
标签:Enemy 转换 Player dynamic Entity cast 类型 强制

都在运行时执行,而不是在编译时执行,所以有运行成本。它们实际是函数,所以需要传参数,还有返回值。

  • \static_cast:

  c++中传统的类型转换直接使用(类型),如果出错也不会提醒错误,但使用static_cast<类型>就会提示

  • reinterpret_cast:

   类型相关的转换,起始是底层内存映射的转换

  • dynamic_cast 

  用于父类和子类之间的类型转换。例子:假设Enemy和Player都是Entity的子类,当将Enemy和Player都转换为Entity时,我们不知道它原来时玩家还是敌人;

当你强制再转换回任意身份时,它都不会报错,这样就会出现类型错误。

dynamic_cast使用了RTTI存储运行时的类型,在之后可以检查类型是否匹配,这增加了开销。

class Entity {
public:
virtual void PrintName() { }//写一个虚函数,表示它是一个多态类型,必须继承重写
};
class Player :public Entity {

};
class Enemy :public Entity{

};
     Entity* actuallyPlayer = new Player();
	 //Enemy* actuallyEnemy = (Enemy*)actuallyPlayer;//显然开始的player既是Entity又是Player,是双态类型;原本它是Player,现在强制转换成Enemy却没有报错。
	 Entity* actuallyEnemy = new Enemy();
	 Player* p1 = dynamic_cast<Player*>(actuallyEnemy);
	 Player* p2 = dynamic_cast<Player*>(actuallyPlayer);

当类型转换成功就返回1,转换不成功返回NULL

标签:Enemy,转换,Player,dynamic,Entity,cast,类型,强制
From: https://www.cnblogs.com/wangkaixin-yy/p/17768338.html

相关文章

  • Python实现PDF转换文件格式
    最近工作中经常遇到收到其他人提供的pdf文档,想要编辑修改下或者复制部分内容比较困难,想通过现有的pdf工具软件转换文档格式,基本都要充钱,为了免费实现pdf转换工具,网上查了下相关技术方案,整理了下代码,测试真实有效,分享下。 第一步,安装相关第三方库pipinstallPyMuPDF-ihttps:......
  • Word标题编号转换为纯文本
    一、创建宏这个要用到宏命令打开Word文档,按下快捷键Alt+F8,在“宏名”栏中输入“编号转换为文本”,这是给它起的名字,然后点击“创建”在新打开的窗口上,你会看到光标在闪烁,把下面函数中的4行内容复制粘贴到此处。Sub编号转纯文本()DimkgslistAsListForEachkgslistInAc......
  • 使用开源播放器VLC media player进行视频格式转换
    VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及DVD、音频CD、VCD及各类流媒体协议。---摘自官网一般用它来播放视频,但其实它也可以转换视频.虽然官网没有明说,我估计转换功能是调用了大佬程序员 法布里斯•贝拉(FabriceBellard)的开源项目FFmpe......
  • 警惕 C++ 中的隐式类型转换
    今天文章的主题灵感来自客户的一个问题:我在研究一个代码中的栈溢出问题。为了减小栈帧的大小,我尽可能多地删除了局部变量,但仍有很多栈空间无法解释。除了局部变量、参数、保存的寄存器和返回地址之外,栈上还有什么其他的东西呢?我的回答是,嗯,还有结构化(SEH)的异常处理信息,但这通常不......
  • .NET 一些常用的类型转换扩展
    ///<summary>///转换扩展类///</summary>publicstaticpartialclassExtensions{#region转换为long///<summary>///将object转换为long,若转换失败,则返回0。不抛出异常。///</summary>///&l......
  • 造题记录:如何出强制在线题
    今天造了一个数据结构题,具体题面是什么就不说了,题目名称是sosomst。输入格式是,第一行\(n,typ\),接下来两行的点权,然后是一棵树。输出\(n-1\)行的数字,树边强制在线。以下是我生成这题数据的方法。std.cpp肯定是自己写了,但是先不要实现强制在线。将std.cpp编译为可执行文件......
  • Java 数组与List转换
    示例@Testvoidstr2arr(){Stringids="1,2,3,4,5,6";//字符串-->String数组String[]arrayStr=ids.split(",");System.out.println(arrayStr);}@Testvoidlist2Str(){List<......
  • 19_类型转换
    类型转换static_cast静态类型转换classBase{};classSon:publicBase{};classOther{};1用于父类和子类之间指针或引用的转换基本类型:支持intnum=static_cast<int>(3.14);//ok2上行转换:支持安全Base*p=static_cast<Base*>(newSon);3下行转换:支持(......
  • 终于知道如何利用hive的日期转换函数进行日期格式的清洗啦~(之前用的外部数据清洗)
    1、创建合适格式的表result10createtableresult10(ipString,time1String,dayString,trafficString,typeString,idString)rowformatdelimitedfieldsterminatedby','storedastextfile;2、将txt文件的数据插入到表中:loaddatalocalinpath'/data/resul......
  • 【CSS3】CSS3 3D 转换 ③ ( 3D 透视视图 | translateZ 转换分析 | 网页调试工具调试 t
    文章目录一、translateZ转换分析1、translateZ转换对应的空间分析2、网页调试工具调试translateZ属性值二、代码示例-translateZ转换分析1、代码示例-translateZ为0的参照示例2、代码示例-translateZ为200示例一、translateZ转换分析1、translateZ转换对应的......