当前位置: 首页 > news >正文

part-02 C++知识总结(类型转换)

一.C++常用的类型转换函数

在C++中,有几种自带的类型转换函数可以用于不同类型之间的转换。以下是其中一些常用的自带类型转换函数:

1.隐式转换(Implicit Conversion)

数字类型之间的隐式转换,例如将int转换为floatdouble等。

派生类指针向基类指针的隐式转换。

2.显式转换(Explicit Conversion)

C风格的强制类型转换:使用(type)value,例如(int)3.14将浮点数转换为整数。

函数样式的强制类型转换:使用type(value),例如int(3.14)也可以将浮点数转换为整数。

 

3.const_cast:用于去除const和volatile属性

const_cast<type>(expression),例如const_cast<int*>(ptr)可以去除指针ptr的const属性。

 

4.static_cast用于静态类型转换(大多数常见的转换操作都可以使用static_cast完成)。

static_cast的语法:
static_cast<目标类型>(表达式)

 

1.基本数据类型之间的转换

int a = 42;
double b = static_cast<double>(a);

 2.子类指针向基类指针的转换

class A{
}
class B:public:A{
}B*b=new B();
A*a=static_cast<A*>(b);

 注意:这种转换只在派生类转换到基类中有效

 

3.空指针的类型转换

int* ptr = static_cast<int*>(nullptr);

尽管nullptr本身就是空指针的字面值,但在某些上下文中,编译器可能无法推断出需要的指针类型。因此,通过使用static_cast进行强制转换,可以明确告诉编译器将nullptr转换为int*类型的指针。

这通常在以下情况下使用:

  1. 当需要将一个空指针赋值给一个特定类型的指针变量时,例如在初始化指针或进行复制/赋值操作时。
  2. 当调用期望接受特定类型指针参数的函数时,可以将nullptr转换为该类型的指针并传递给函数。

需要注意的是,在使用static_castnullptr转换为指针类型时,请确保目标指针类型是有效的,并且可以安全地使用它来执行后续操作,以避免未定义行为。

4.强制转换为枚举类型

enum class Color {RED,GREEN,BLUE 
};
int value = 1;
Color color = static_cast<Color>(value);

这里将 int 类型的 value 转换成了 枚举类型Color。

5.dynamic_cast用于在继承层次结构中进行安全的向下转型。

dynamic_cast<type>(expression),例如dynamic_cast<Derived*>(basePtr)将基类指针basePtr转换为派生类指针。

 

6.reinterpret_cast用于进行不相关类型之间的转换,通常用于将指针或引用重新解释为其他类型。

reinterpret_cast<type>(expression),例如reinterpret_cast<int*>(ptr)将指针ptr转换为整型指针。

 

需要注意的是,在使用类型转换函数时要小心潜在的风险和副作用。应确保转换操作是安全和合理的,并避免滥用类型转换。

相关文章:

part-02 C++知识总结(类型转换)

一.C常用的类型转换函数 在C中&#xff0c;有几种自带的类型转换函数可以用于不同类型之间的转换。以下是其中一些常用的自带类型转换函数&#xff1a; 1.隐式转换&#xff08;Implicit Conversion&#xff09; 数字类型之间的隐式转换&#xff0c;例如将int转换为float、do…...

stable diffusion实践操作-图生图

本文专门开一节写图生图相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 正文...

Jtti:Ubuntu18.04如何修改远程ssh端口号

要在Ubuntu 18.04上修改SSH的远程端口号&#xff0c;您需要编辑SSH服务器配置文件并指定新的端口号。以下是具体的步骤&#xff1a; 以root或具有sudo权限的用户登录到您的Ubuntu服务器。 备份SSH配置文件&#xff08;可选&#xff09;&#xff1a; 在进行任何更改之前&…...

微软表示Visual Studio的IDE即日起开启“退休”倒计时

据了解&#xff0c;日前有消息透露称&#xff0c;适用于 Mac平台的Visual Studio集成开发环境(IDE)于8月31日启动“退休”进程。 而这意味着Visual Studio for Mac 17.6将继续支持12个月&#xff0c;一直到2024年8月31日。    微软表示后续不再为Visual Studio for Mac开发…...

好马配好鞍:Linux Kernel 4.12 正式发布

Linus Torvalds 在内核邮件列表上宣布释出 Linux 4.12&#xff0c;Linux 4.12 的主要特性包括&#xff1a; BFQ 和 Kyber block I/O 调度器&#xff0c;livepatch 改用混合一致性模型&#xff0c;信任的执行环境框架&#xff0c;epoll 加入 busy poll 支持等等&#xff0c;其它…...

element——switch接口成功后赋值打开开关

应用场景 基本用法使用v-model双向绑定值&#xff0c;进行开关控制 例子1:需求&#xff1a; **点击switch&#xff0c;出弹窗&#xff0c;点击弹窗保存按钮调接口成功后再赋值&#xff08;row.orderButtonValue“1”&#xff09;打开switch开的状态变颜色。 在vue 中使用 :va…...

WPF Border设置渐变色

背景色渐变 <Border> <Border.Resources> <Style TargetType"Border"> <Setter Property"Background"> …...

SAP_ABAP_OLE_EXCEL批导案例

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型https://blog.csdn.net/java_zhong1990/article/details/132469977 一、OLE_EXCEL批导 1.1 下载按钮 1.2 选择EXCEL上传&#xff0c;解析EXCLE数据&#xff0c; Call屏幕。 1.3 实现效果 1.4…...

MySQL以及版本介绍

一、MySQL的介绍 MySQL数据库管理系统由瑞典的DataKonsultAB公司研发&#xff0c;该公司被Sun公司收购&#xff0c;现在Sun公司又被Oracle公司收购&#xff0c;因此MySQL目前属于 Oracle 旗下产品。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用…...

stm32 iap sd卡升级

参考&#xff1a;STM32F4 IAP 跳转 APP问题_stm32程序跳转_古城码农的博客-CSDN博客 app程序改两个位置 1.程序首地址&#xff1a; 2.改中断向量表位移&#xff0c;偏移量和上面一样就可以 然后编译成bin文件就可以了...

D358周赛复盘:哈希表模拟⭐⭐+链表乘法翻倍运算(先反转)⭐⭐⭐

文章目录 2815.数组中的最大数对和思路完整版 2816.翻倍以链表形式表示的数字&#xff08;先反转&#xff0c;再处理进位&#xff09;思路完整版 补充&#xff1a;206.反转链表&#xff08;双指针法&#xff09;完整版 2817.限制条件下元素之间的最小绝对差&#xff08;cpp不知…...

java八股文面试[数据库]——索引的基本原理、设计原则

索引的设计原则 索引覆盖是什么&#xff1a; 索引&#xff08;在MySQL中也叫做“键&#xff08;key&#xff09;”&#xff09; 是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时&#xff0c;索引…...

2023年京东方便食品行业数据分析(京东数据报告)

​疫情中方便食品的销售一度火爆&#xff0c;但随着当前消费场景的开放&#xff0c;方便食品销售又恢复常态并开始下滑。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年7月份&#xff0c;京东平台方便食品的销量为800万&#xff0c;环比降低约23%&#xff0c;同比降…...

无涯教程-Android - Style Demo Example函数

下面的示例演示如何将样式用于单个元素。让我们开始按照以下步骤创建一个简单的Android应用程序- 步骤说明 1 您将使用Android Studio IDE创建一个Android应用程序,并在 com.example.saira_000.myapplication 包下将其命名为 myapplication ,如中所述您好世界Example一章。 2 …...

【算法训练-字符串 二】最长回文子串

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【最长回文子串】&#xff0c;使用【字符串】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为…...

结合OB Cloud区别于MySQL的4大特性,规划降本方案

任何一家企业想要获得持续性的发展与盈利&#xff0c;“降本增效”都是难以绕开的命题。但是“一刀切”的降本影响往往不太可控&#xff0c;成本的快速收缩往往会给业务带来低效运营和增长缓慢的风险。所以我们所说的降本&#xff0c;是指在成本降低的同时&#xff0c;效率不降…...

题目有点太简单了,不知道怎么选了

有个公司给了下面一个题目&#xff0c;看了下太简单了&#xff0c;都怕选错了。 后来拿着程序跑了下&#xff0c;就是这个意思嘛。 结论 程序跑出来的结果就是对输入的列表进行倒序排列。 public void testGetPut() throws Exception {List<Integer> numbers List.of(…...

Bug:mac上运行go run main.go 报错,fork/exec /var/fold/T/go-build269/b001/ex

Bug&#xff1a;mac上运行go run main.go 报错&#xff0c;fork/exec /var/fold/T/go-build269/b001/ex 今天通过goland执行go run main.go运行我本地编写好的go代码时&#xff0c;发现报错fork/exec / xxx 解决办法 方法一&#xff1a; 因为当前go的build环境不对&#xff0c…...

CSRF与XSS结合利用

文章目录 修改cms网站后台管理员密码成功登录总结 修改cms网站后台管理员密码 CSRF和XSS结合的JS代码&#xff1a; <script> xmlhttp new XMLHttpRequest(); xmlhttp.open("post","http://10.4.7.130/cms/admin/user.action.php",false); xmlhttp…...

【爬虫】实验项目一:文本反爬网站的分析和爬取

目录 一、实验目的 二、实验预习提示 ​编辑 三、实验内容 四、实验要求 五、实验过程 1. 基本要求&#xff1a; 2. 改进要求A 3. 改进要求B: 六、资料 1.实验框架代码&#xff1a; 2.OpenSSL&#xff1a;Win32/Win64 OpenSSL Installer for Windows - Shining Light…...

只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000

只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000 目录 只要一行代码,瞬间搭建 Web 服务器 python -m http.server 8000 1. 核心机制:内置的 `http.server` 模块 2. 为什么它能“求生”,但不能“生产”? 🚀 并发处理能力 (Concurrency) 🛡️ 安全性 (Se…...

2026.3.31 TRO成功和解案例 案件号:25-cv-25717,1000美金和解Palmer律所3000美金索赔,沃尔玛店铺全额解冻!

TRO经典案例案件概述案件号&#xff1a;25-cv-25717&#xff08;点击查看案件详情&#xff09;案件时间&#xff1a;2025-12-8收到TRO时间&#xff1a;2025-12-20销售平台&#xff1a;沃尔玛冻结金额&#xff1a;$209美金Palmer律所索赔额&#xff1a;$3,000美金侵权产品销售量…...

BUUCTF-[HITCON 2017]SSRFme

代码分析<?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { //HTTP_X_FORWARDED_FOR可以获取客户端真正ip地址&#xff0c;和各个代理IP地址$http_x_headers explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]); //拆分字符串&#xff0c;以&#xff0c;分割$_SERVER[REMOTE…...

FreeRtos——24、STM32中断处理体系及软件定时器按键消抖

第一节:STM32中断处理体系结构1.中断处理路径:2.NVIC中断控制器的中断优先级&#xff1a;2.1 中断号&#xff1a;在NVIC中对于硬件产生的任何一个中断都分配了一个中断号&#xff0c;中断号是一个唯一的标识符&#xff0c;用于识别每个外设设备的中断。NVIC使用中断号来配置中断…...

千问3.5-2B博物馆导览:展品图理解、说明牌OCR与个性化讲解生成

千问3.5-2B博物馆导览&#xff1a;展品图理解、说明牌OCR与个性化讲解生成 1. 博物馆导览新体验 想象一下&#xff0c;当你站在博物馆的展品前&#xff0c;只需用手机拍下展品照片&#xff0c;就能立即获得专业的讲解内容、展品背景故事&#xff0c;甚至还能根据你的兴趣偏好…...

DanKoe 视频笔记:人生经验课:给18岁自己的信

在本节课中&#xff0c;我们将学习一位28岁人士回顾过去&#xff0c;总结出的核心人生经验。这些经验旨在帮助年轻人&#xff0c;特别是那些感到迷茫、渴望超越平凡生活的人&#xff0c;建立自主性、明确目标并采取有效行动。我们将把这些经验整理成一套清晰的教程&#xff0c;…...

新手福音:通过快马平台生成带详解代码,轻松完成openclaw首次本地部署

今天想和大家分享一个特别适合新手的实践项目——在本地部署openclaw。作为一个刚接触AI部署的小白&#xff0c;我最初看到各种复杂的配置步骤就头大&#xff0c;直到发现了InsCode(快马)平台&#xff0c;整个过程变得简单多了。下面就把我的经验整理成笔记&#xff0c;希望能帮…...

AI赋能51单片机开发:让快马平台智能生成复杂避障算法代码

最近在做一个基于51单片机的智能小车项目&#xff0c;需要实现复杂的避障功能。传统开发方式需要手动编写大量底层代码&#xff0c;调试起来特别耗时。不过这次尝试用InsCode(快马)平台的AI辅助功能&#xff0c;整个过程顺利了很多。 需求分析阶段 首先需要明确小车的核心功能&…...

驱动残留清理技术解析:Display Driver Uninstaller实战指南

驱动残留清理技术解析&#xff1a;Display Driver Uninstaller实战指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninsta…...

OpenAirInterface (OAI) 实战:如何用USRP搭建你的第一个5G仿真环境(附避坑指南)

OpenAirInterface (OAI) 实战&#xff1a;如何用USRP搭建你的第一个5G仿真环境&#xff08;附避坑指南&#xff09; 当5G技术从实验室走向商业化时&#xff0c;开源软件无线电平台OpenAirInterface&#xff08;OAI&#xff09;正成为开发者验证创新想法的关键工具。不同于商业设…...