C++类型转换

Qwen 三代进化全景对比:从 Qwen2.5 到 Qwen3 再到 Qwen3.5 本文对比了阿里巴巴通义千问三代大模型(Qwen2.5、Qwen3、Qwen3.5)的技术演进。18个月内,模型在架构、训练数据和能力上实现显著突破:从纯稠密结构(Qwen2.5)发展为混合注意力架构(Qwen3.5),支持语言从29种扩展至201种,并实现原生多模态融合。关键进展包括引入MoE架构、Gated DeltaNet混合注意力机制(计算效率提升10倍)、以及从独立模态到早期视觉语言联合训练的转变。模型阵容从7个通用尺寸发展为8+个混合架构,最大参数量达397B,上下文窗口扩展至256K(托管版1M 阅读详情


强制转换:
对于标准C来说 强制转换为 (type-id)
对于C++来说 提供了另一种强制转换 static_cast、dynamic_cast、reinterpret_cast、和const_cast

---> static_cast< type-id > ( expression )
该运算符把 expression 转换为 type-id 类型 但没有运行时类型检查来保证转换的安全性

-> 用于类层次结构中基类和子类之间指针或引用的转换
进行上行转换(把子类的指针或引用转换成基类表示)是安全的
进行下行转换(把基类指针或引用转换成子类指针或引用 时 由于没有动态类型检查所以是不安全的
-> 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证
-> 把void指针转换成目标类型的指针(不安全!!)
-> 把任何类型的表达式转换成void类型。

---> dynamic_cast< type-id > ( expression )
该运算符把expression转换成type-id类型的对象 Type-id必须是类的指针、类的引用或者void *
如果type-id是类指针类型,那么expression也必须是一个指针
如果type-id是一个引用,那么expression也必须是一个引用。

简单来说 dynamic_cast 是一个在 "具有虚函数" 的 "基类" 和 "派生类" 之间的互相转换使用;
他会进行一个"类型检查" 即是否可以进行转换?
在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;( 子类转父类 )
在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。( 父类转子类 )
比如:
class A
class B : public A

void Func( A *a )
{
 B *b = dynamic_cast< B * > ( a );
}

如果这个函数 传入的 a 是一个 class A 的实例 则转换失败 b == nullptr;
如果这个函数 传入的 a 是一个 class B 的实例 则转换成功;

所以 dynamic_cast 主要用于 "无法确定传入的到底是不是特定子类对象的时候";

用法:

#include <iostream>

class Employee
{
 public:
 virtual void Pay() { std::cout << "Employ Pay" << std::endl; }
};

class Manager : public Employee
{
 public:
 virtual void Pay() { std::cout << "Manager Pay" << std::endl; }
};

class Programer : public Employee
{
 public:
 virtual void Pay() { std::cout << "Programer Pay" << std::endl; }
 void Bones();
};


class MyCompany
{
 public:
 void Payroll( Employee *pe )
 {
  Programer *pr = dynamic_cast< Programer * > ( pe );
  if( pr != nullptr )
   pr->Bones();
  else
   pe->Pay();
 }
};

void Programer::Bones()
{
 std::cout << "Bones" << std::endl;
}

---> reinpreter_cast< type-id > ( expression )
type-id必须是一个指针、引用、算术类型、函数指针或者成员指针
它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针
(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)


---> const_cast< type-id > ( expression )
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。

const int temp = 1;
int *p1 = const_cast< int * > ( &temp );
*p1 = 50;
std::cout << *p1;


我的AI个人公司成立:基于Skills与Qwen大模型的智能问答平台实战开发+龙虾团队 微学AI推出数字员工矩阵,包含10个核心AI角色(总经理、秘书、工程师等),每个角色具备专属技能模块。系统采用FastAPI+Vue3技术栈,核心功能包括:基于SkillLoader的动态技能管理(支持脚本执行和文档加载)、WebSocket流式输出、多轮对话上下文管理。通过模块化架构实现AI自驱协作,可自主完成从需求分析到开发落地的全流程。项目亮点在于声明式技能配置和实时交互能力,打破传统办公壁垒,提升工作效率。 阅读详情

相关推荐

【Unity】YooAsset + HybridCLR热更

本文介绍了Unity游戏开发中的热更新技术方案,重点对比了资源热更和代码热更的主流工具。资源热更方面分析了Asset Bundle、Addressable和YooAsset的优缺点;代码热更部分比较了xLua、ILRuntime、InjectFix和HybridCLR的性能特点。文章详细演示了HybridCLR+YooAsset的实践方案,包括加载热更新程序集、反射调用热更代码、资源打包部署等完整流程。该方案通过原生运行时实现程序集级热更,具有极低性能损耗和全生命周期适用性,配合YooAsset简化了资源管

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2916

WinRT(C++/CX) UTF8类型转换为std::string和Platform::String^的Unicode字符串

Gist 仓库地址:https://gist.github.com/huihut/8f75e2332e05673ff7e1248ad5e85339 #include &lt;string&gt; #include &lt;Windows.h&gt; std::string UTF8_To_Std_Str(const std::string &amp; str) { int nwLe...

辉哈 1456

【ANSYS Workbench仿真】命令流:压力渗透pressure penetration

对与流体接触的part添加边界压力,使流体压力渗透点的接触应力与流体压力相等,以便得到真实的变形结果,就需要用到“pressure penetration”。 但是在ansys中,只能通过ADPL的形式添加,即在workbench中添加命令流的形式。此文主要介绍了**压力渗透的添加要点**和**命令流使用说明**。

路边小M's Blog 1万+

utf8与std::string字符编码转换

<br /><br />1.  utf8转std::string <br />转换过程:先将utf8转双字节Unicode编码,再通过WideCharToMultiByte将宽字符转换为多字节。<br />//----------------------------------------------------------------------- <br />std::string UTF8_To_string(const std::string & str) <br />{ <br />int nwL

kieven2008的专栏 2万+

吉林大学软件工程章节测验 第九章 答案+解析

4.【判断题】估算软件规模有代码行技术和功能点技术两种方法,其中代码行方法估计实现一个功能所需要的源程序行数,其不依赖项目所使用的开发语言,并且具有较好的直观性。3.【单选题】软件项目估算时,若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出功能点估计值,记作a, m, b,则估算的期望值E的公式为( )。8.【判断题】在工程网络图中,如果在由起始事件至终止事件所构成的一条路径上,所有事件的最早时刻都和最迟时刻都相同,那么这条路径就是关键路径。4.【单选题】配置管理贯穿软件开发的整个过程。

m0_51459931的博客 1431

智能车八邻域图像算法_二

智能车八邻域图像算法 文章目录智能车八邻域图像算法前言一、一些想法二、生长方向的使用1.点的生长方向的表示2. 用点的生长方向来做初步判断1.引入库2.读入数据总结 前言 上一篇里面讲过用八邻域来获得赛道边界:智能车八邻域图像算法 当已经能稳定获得赛道边界时,就可以进行元素识别,获得偏差了。 这里就介绍一下我的一些思路。 早在前两年,优快云上就有一篇关于八邻域如何处理元素的文章第十五届全国大学生智能汽车竞赛-双车组三轮图像处理总结,写得很好,我当时也参考了这篇文章,但是我觉得不是很详细,所以我这里想写得

技术缝合怪的博客 1万+

c++ string、UTF8相互转换方法

c++ string、UTF8相互转换方法 std::string ofDewarServer::string_To_UTF8(const std::string & str) std::string ofDewarServer::UTF8_To_string(const std::string & str)

隐士的专栏 3万+

eMMC数据擦除的方式

接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。

DPJimmy的博客 1772

VC中Ansi、Unicode、UTF8字符串之间的转换和写入文本

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://dark0729.blogbus.com/logs/51496111.html Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件 Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这种字符串,常被定义为ty...

fiona1985的博客 639

手把手教你从入门到精通C#串口通信

本文以我开发的串口助手SComTool为例,详细介绍《C#串口通信从入门到精通》专栏的目录内容,本专栏由一个高级工程师多年实战经验总结,绝对是c#串口通信的葵花宝典!带您从入门到精通C#串口通信!

qq_34059233的博客 3万+

SAPGUI excel 导出时遇到的运行时错误:STRING_SIZE_TOO_LARGE

当报表导出需求远超单一 XLSX 文件的物理承载力时,与其在 SAPGUI 中硬拼 2 GB 限制,不如把分页、过滤、流式写入作为设计前提。掌握 ABAP2XLSX 或 CSV + Power Query 等工具链,既能满足审计合规,又能让应用服务器远离的噩梦。祝你在下一次导出海量数据时,既高效又优雅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 640

C++ 编码转换

https://github.com/yaocoder/utility/blob/master/src/string/windows/EncodingConverter.h#pragma once#include #ifdef tstring#error "\"tstring\" Macro has been defined."#else#ifdef _UNICODE#define tstrin

要坚持,要认真。 1610

使用菱FX5U系列PLC实现以太网通信的具体方法示例

接下来,我们将创建一个简单的CPU通信功能,以实现与其他设备的以太网通信。在上述代码中,我们首先设置访问号,然后创建一个数据读取命令(M_READ)和一个数据写入命令(M_WRITE)。此外,在实际应用中,您还需要确保PLC和其他设备之间的网络连接正常,并且遵循相应的通信协议。在上述代码中,我们执行了数据读取命令,并将接收到的响应存储在M_RESPONSE变量中。通过简单CPU通信功能,菱FX5U系列PLC可以实现与其他设备的以太网通信。我们将提供相应的源代码和详细的说明,以帮助您轻松实现这一功能。

DevCyberX的博客 1527

[cpp进阶]C++类型转换

当我们在函数中用父类的指针或引用接受参数时,接收的参数有可能指向父类对象也有可能指向子类对象,当接收的参数指向父类对象时,不需要做任何处理,当接收的参数指向子类对象时,有时就需要将该对象转换为原来的子类对象。

weixin_53027918的博客 1143

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...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【C++】特殊类的设计、单例模式以及Cpp类型转换

本文深入探讨C++中特殊类的设计方法与类型转换机制。针对特殊类设计,详细解析如何实现禁止拷贝、限制对象创建于堆/栈、防止继承及单例模式(饿汉与懒汉),并分析其应用场景与线程安全问题。在类型转换部分,系统介绍C++四种强制转换操作符(static_cast、reinterpret_cast、const_cast、dynamic_cast)的原理与适用场景,剖析隐式转换的潜在风险(如数据截断与死循环),并对比C风格转换的缺陷。通过实例代码与场景分析,帮助开发者掌握高效、安全的编程实践,提升代码健壮性与可维护性。

2303_77756141的博客 2235

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Cpp||类型转换

Cpp类型转换 文章目录Cpp类型转换1:c语言中的类型转换1.1:隐式类型转换:意义相似的类型1.2: 强制类型转换:意义差距较大的类型2:C++中的类型转换2.1:static_cast2.2:reinterpret_cast2.3:const_cast2.4:dynamic_cast 1:c语言中的类型转换 1.1:隐式类型转换:意义相似的类型 int main(){ int a=2; ...

Template Code 851

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

cpp 类型转换

cpp 丰富的类型允许根据不同的需求选择不同的类型,这也使计算机的操作更复杂。例如,将两个short值相加涉及到的硬件编译指令可能会与将两个long值相加不同。由于有11中整型和3种浮点类型,因此计算机需要处理大量不同的情况,尤其是对不同的类型进行运算时,为处理这种潜在的混乱,cpp自动执行很多类型转换: 将一种算术类型的值赋给另一种算术类型的变量时,cpp将对值进行转换; 表达式中包含不同的类型时,cpp将对值进行转换; 将参数传递给函数时,cpp将对值进行转换; 1.初始化和赋值...

liguandong 2381

C++的类型转换

C语言和C++都是强类型语言,如果赋值运算符左右两侧变量的类型不同,或形参与实参的类型不匹配,或返回值类型与接收返回值的变量类型不一致,那么就需要进行类型转换。C语言中有两种形式的类型转换,分别是隐式类型转换和显式类型转换:隐式类型转换:编译器在编译阶段自动进行,能转就转,不能转就编译失败。显式类型转换:需要用户自己处理,以`(指定类型)变量`的方式进行类型转换。需要注意的是,只有相近类型之间才能发生隐式类型转换,不相近类型之间只能进行强制类型转换。

2021dragon的博客 7572

【C++】—— C++的类型转换

C++的类型转换详解

m0_56069910的博客 3674

C++强制类型转换

C++ 类型转换(C风格的强制转换): 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。 (1)将浮点型数据赋值给整型变量时,舍弃其小数部分。 (2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。 (3)将double型数据赋值给float型变量时,注意数值范围溢出。 (4)字符型数据可以赋值给整型变量,此时存入的是字符的ASCII码。 (5)将一个int,short或long型数据赋值给一个char型变量,只

q610098308的专栏 6万+

【C++】类型转换

如果,或者,或者,就需要有以下两种形式:1.隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败2.显式类型转化:需要用户自己处理:转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。

关注学习C++领域,感谢陪伴,共同进步! 1437

cpp 4个类型转换

static_cast、dynamic_cast、reinterpret_cast、const_cast 之间的区别 static_cast 用法:static_cast (expression) 说明:该运算符把expression转换为typeid类型,但没有运行时类型检查来确保转换的安全性。 用途: 用于类层次结构中基类和派生类之间指针或者引用的转换。up-casting (把派生类的指...

weixin_33984032的博客 1045

【C++】四种强制类型转换

C++ 四种强制类型转换   C语言中的强制类型转换(Type Cast)有显式和隐式两种,显式一般就是直接用小括号强制转换,TYPE b = (TYPE)a; 隐式就是直接 float b = 0.5; int a = b; 这样隐式截断(by the way 这样隐式的截断是向 0 取整的,我喜欢这么叫因为 0.9 会变成 0,1.9 变成 1,-0.9 变成 0,-1.9 变成 -1)。  ...

Bob__yuan的博客 4万+

C++ 类型转换

隐式类型转换 1 数值类型转换 2 指针类型转换 显式类型转换 1 explicit关键字 1 强制类型转换 11 static_cast 12 dynamic_cast 13 const_cast 14 reinterpret_cast 参考资料 C++类型转换大体上包括隐式类型转换和显式类型转换。1. 隐式类型转换隐式类型转换是自动执行的,无需显式的操作符。 隐式类型转换发生在很多地方,比如函数

shuzfan的专栏 1万+

【C++】C++的类型转换

本篇文章概要性地介绍了C语言与C++中的类型转换机制。首先,回顾了C语言中的类型转换方式。然后,阐述了C++为何需要四种强制类型转换(static_cast、reinterpret_cast、const_cast、dynamic_cast),以适应其面向对象的特性及复杂的类层次结构。接着,详细说明了这四种强制类型转换的使用场景与特点。此外,简要介绍了RTTI(运行时类型识别)的概念。希望本篇文章对大家学习C++类型转换有所帮助。

是阿建吖! 900

Cpp_类型转换

C风格的类型转换C++完全兼容。C++新增了四个显式类型转换运算符。 1)静态类型转换:static_cast<目标类型> A.将基类的指针或引用转换为子类的指针或引用; B.自定义类型转换。它允许子类类型的指针转换为父类类型的指针(这是一个有效的隐式转换),同时,也能够执行相反动作:转换父类为它的子类,但会给出编译警告下面的例子中,被转换的父类没有被检查是否与目的类型相一致。class Ba

Jerry的专栏 1022
上一篇: C++11可变参数函数与for循环
下一篇: C++类型
zhang_yao_wu1993
博客等级 码龄12年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值