c++ 11 新特性 不同数据类型之间转换函数之const_cast
一.不同数据类型之间转换函数const_cast介绍
const_cast是C++11中引入的一种类型转换操作符,用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性,它是唯一具有此能力的C++风格的转型操作符。在C++11中,const_cast可以完成以下类型转换:
- 常量指针转非常量指针:当有一个指向常量的指针时,可以使用
const_cast将其转换为指向非常量的指针,这样就能够修改原来被指向的常量对象的值。- 常量引用转非常量引用:与指针类似,如果有一个指向常量的引用,可以使用
const_cast将其转换为非常量的引用。- 多级指针的转换:两个可能指向同一类型的多级指针可以相互转换,而不考虑每一层上的
cv性质(即const和volatile)。- 空指针值的转换:空指针值可以转换为新类型的空指针值。
需要注意的是,
const_cast不是用于去除变量的常量性,而是用于去除指向常数对象的指针或引用的常量性。其去除常量性的对象必须为指针或引用。在使用const_cast时,需要特别小心,因为虽然它可以去除const属性,但这并不意味着原来的常量对象可以被修改,除非该对象本身并不是const。此外,如果尝试修改一个真正的常量对象,将会导致未定义行为。
二. const_cast 使用示例
1.常量指针转非常量指针
#include <iostream>int main() {const int a = 10;int* p = const_cast<int*>(&a);*p = 20;std::cout << "a: " << a << std::endl;std::cout << "*p: " << *p << std::endl;return 0;
}
运行结果:

2.常量引用转非常量引用
#include <iostream>int main() {const int a = 10;const int& r = a;int& nr = const_cast<int&>(r);nr = 20;std::cout << "a: " << a << std::endl;std::cout << "r: " << r << std::endl;std::cout << "nr: " << nr << std::endl;return 0;
}
运行结果:

3. 空指针值的转换
#include <iostream>int main() {int* p = nullptr;int** pp = const_cast<int**>(reinterpret_cast<const int**>(p));std::cout << "pp: " << pp << std::endl;return 0;
}
运行结果:

可以看到,通过
const_cast将空指针值转换为新类型的空指针值后,得到的是一个空指针。需要注意的是,这里的转换使用了reinterpret_cast进行类型转换,这是因为const_cast不能直接将空指针值转换为非空指针类型。
相关文章:
c++ 11 新特性 不同数据类型之间转换函数之const_cast
一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符,用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性,它是唯一具有此能力的C风格的转型操作符。在C11中,const_cast可以完成…...
C++从零开始的打怪升级之路(day45)
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于二叉树的题目 1.根据二叉树创建字符串 606. 根…...
小鹅通前端实习一面
总时长35分钟,自我介绍开始 1.js和c特点上的差异; 2.js数组去重 3.js的数据类型 4.js的引用类型和值类型的差别 5.讲一下js的网络请求 6.对前端三件套和框架的理解 7.一个html文档的结构是怎样的 8.head和body的区别 9.一个页面的加载顺序(ht…...
ArrayList常用API
常见方法 add 增remove 删set 改get 查clear 清空元素size 长度isEmpty 为空判断 用法 // String就是泛型 这种使用方法对于限制类型很有用 ArrayList<String> arrayList new ArrayList<>();// add 添加元素 返回的是boolean 代表是否添加成功 arrayList.add(&qu…...
Chrome安装Axure插件
打开原型目录/resources/chrome,重命名axure-chrome-extension.crx,修改后缀为rar,axure-chrome-extension.rar 解压到axure-chrome-extension目录打开Chrome,更多工具->扩展程序,打开开发者模式,选择加…...
【AI+应用】模仿爆款视频二次创作短视频操作步骤
本来不想水这篇的, 剪辑软件估计很多人用的比我还6。 今天自己遇到1个需求,我看到一篇公众号文章的视频觉得有意思,但视频有点长,我没带耳机看视频的习惯,就想着能不能下载下来, 提取视频的音频转为文字&am…...
HTML使用
文章目录 一、简介二、HTML快速入门三、基础标签四、图片、音频、视频标签五、超链接标签六、列表标签七、表格标签八、布局标签九、表单标签十、表单向标签 一、简介 二、HTML快速入门 <html><head><title>你好</title></head><body>再…...
通过联合部署DDoS高防和WAF提升网站防护能力
如果您的网站遭受的攻击既有流量型攻击,又混杂精巧的Web应用层攻击时(例如SQL注入、跨站脚本攻击、命令注入等)时,推荐您组合使用阿里云DDoS高防和Web 应用防火墙 WAF(Web Application Firewall)࿰…...
具体挫折现象的发生以及解法思考:您如果继续不问的话,严重重责就容易来
一 积极想方设法的寻找扭转劣势的方式方法; 目前对于第一条的践行,主要还是依靠打工做事赚取收入。至于个人业务,只能往后推,往后延迟。因为不管您目前居住的环境,还是个人条件都不行,所以无法实行个人业…...
Type-C接口PD协议统一:引领电子科技新纪元的优势解析
在电子科技日新月异的今天,充电接口的统一化已经成为了业界的一大趋势。其中,Type-C接口凭借其传输速度快、使用便捷等优点,迅速成为了市场上的主流选择。而PD(Power Delivery)协议的统一,更是为Type-C接口…...
探讨2024年AI辅助研发的趋势
一、引言 随着科技的飞速发展,人工智能(AI)已经成为当今时代最具变革性的技术之一。AI的广泛应用正在重塑各行各业,其中,AI辅助研发作为科技和工业领域的一大创新热点,正引领着研发模式的深刻变革。从医药…...
Java对接海康威视摄像头实现抓图
目录 一、下载SDK 二、拷贝示例代码 三、拷贝库文件 四、运行Demo 五、抓图业务 六、调参 七、发布Linux正式环境 一、下载SDK 海康开放平台 二、拷贝示例代码 三、拷贝库文件 这时候直接运行ClientDemo会报错,因为缺失库文件! 四、运行Demo …...
浏览器一键重新发起请求
一、需求场景 在前端开发过程中,经常会需要重新请求后台进行代码调试,之前的常规方法是刷新浏览器页面或者点击页面进行交互,这样对多个请求的场景就很方便,但是往往很多时候我们只是单纯的想重新发起一个请求(多个请求…...
一起来读李清照
当然先祝各位女生节日快乐🎁🎁啦。 但是呢,今天,我们不聊技术,来聊点其他的。 大家都知道今天是三八妇女节,三八妇女节的是中国人的叫法,也叫国际妇女节。是为了纪念妇女权利的运动&#…...
找出单身狗1,2
目录 1. 单身狗12. 单身狗2 1. 单身狗1 题目如下: 思路:一部分人可能会使用对数组排序,遍历数组的方式去找出只出现一次的数字,但这种方法的时间复杂度过高,有时候可能会不满足要求。 有一种十分简便的方法是使用异或…...
贝叶斯优化BiLSTM分类预测(matlab代码)
贝叶斯优化BiLSTM分类matlab代码 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8:1:1 数据处理: 在数据加载后,对数据进行了划分,包括训练集、验证集和测试集,这有助于评估模型的泛化能力。 数据标…...
Linux运维:实现光盘开机自动挂载、配置本地yum源教程
Linux运维:实现光盘开机自动挂载、配置本地yum源教程 一、光盘开机自动挂载1、检查光驱设备2、创建挂载点3、编辑/etc/fstab文件4、测试挂载 二、配置本地yum源(挂载光盘或ISO文件)1、挂载ISO文件2、创建YUM仓库配置文件3、清理YUM缓存并测试 💖The Begi…...
C语言从入门到精通 第十二章(程序的编译及链接)
写在前面: 本系列专栏主要介绍C语言的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程。除了参考下面的链接教程以外,笔者还参考了其它的一些C语言教材,笔者认为重要的部分大多都会用粗体标注…...
即插即用篇 | YOLOv8 引入 ParNetAttention 注意力机制 | 《NON-DEEP NETWORKS》
论文名称:《NON-DEEP NETWORKS》 论文地址:https://arxiv.org/pdf/2110.07641.pdf 代码地址:https://github.com/imankgoyal/NonDeepNetworks 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yaml...
基于51单片机的数字频率计设计
基于51单片机的数字频率计设计 摘要: 本文深入探讨了基于51单片机的数字频率计设计方案与实践。该设计方案不仅实现了对输入信号频率的高精度测量,还通过直观的数字显示提供了便捷的读取方式。在电子测量领域,频率作为核心参数之一,其准确测量对于确保通信、音频处理、控…...
从部署视角看模型优化:如何用PyTorch Profiler和thop分析,让你的模型在边缘设备上跑得更快
从部署视角看模型优化:如何用PyTorch Profiler和thop分析,让你的模型在边缘设备上跑得更快 边缘计算设备的算力限制常常成为AI模型落地的瓶颈。当我们将一个在高端GPU上训练流畅的PyTorch模型部署到Jetson Nano或树莓派这类边缘设备时,往往会…...
布拉格相位匹配项
液晶光栅PVG。 衍射效率计算。 (胆甾相)液晶光栅PVG(偏振体积光栅)这玩意儿在AR眼镜和全息显示里特别火,尤其胆甾相液晶那个螺旋结构,能把光的偏振玩出花来。今天咱们就掰开揉碎了说说它的衍射效率到底怎么算——别怕,…...
Tools for Humanity 宣布与布鲁诺·马尔斯巡演合作遭否认,Concert Kit 将改在杰瑞德·莱托乐队巡演推出
眼球扫描初创公司宣布合作巡演却遭否认,Concert Kit改在杰瑞德莱托乐队巡演推出山姆阿尔特曼创立的眼球扫描初创公司 Tools for Humanity 上周宣布,一款名为 Concert Kit 的新产品将首先在布鲁诺马尔斯最新录音室专辑《The Romantic》的世界巡演中推出&a…...
SpringBoot项目API文档从‘能用’到‘好用’:Swagger3配置详解与Knife4j美化实战
SpringBoot项目API文档从‘能用’到‘好用’:Swagger3配置详解与Knife4j美化实战 在团队协作或对外提供API服务时,一份专业、易用的API文档能显著提升开发效率和用户体验。虽然Swagger3已经为SpringBoot项目提供了基础的API文档功能,但要让文…...
ADC0809采集数据老不准?逐次逼近型ADC的误差来源与软件滤波实战(附8086汇编代码)
ADC0809数据采集精度提升实战:误差分析与软件滤波技术解析 当你在实验室里反复调整电位器,却发现ADC0809采集的数据总是飘忽不定时,那种挫败感我深有体会。去年在开发工业温度监控系统时,我连续三天被5℃的波动困扰,直…...
Maven配置翻车实录:从JDK15降级到1.8,我的Maven为何‘记忆’犹新?附3.8.4修复方案
Maven环境变量疑难解析:当JDK降级遭遇版本记忆效应 那天深夜,我的IDE突然弹出一连串红色错误——一个早已卸载的JDK15居然阴魂不散地干扰着当前项目。明明系统环境变量显示JAVA_HOME指向JDK1.8,java -version命令也确认运行在1.8环境…...
别再只用min(A)了!Matlab里min函数的这5种高级用法,数据处理效率翻倍
别再只用min(A)了!Matlab里min函数的这5种高级用法,数据处理效率翻倍 在数据分析与科学计算领域,Matlab的min函数就像瑞士军刀中的主刀——看似简单却功能强大。但许多用户仅停留在min(A)的基础用法,错失了90%的效率提升机会。本文…...
大模型小白逆袭之路:从入门到精通,产品经理大模型学习之旅
本文为产品经理提供了一份从零开始学习大模型AI的完整路线图,涵盖学习资源选择、实践操作、深入探索等阶段,并推荐了丰富的学习资料,包括视频教程、电子书、面试题等,旨在帮助读者从“小白”成长为“大牛”,掌握大模型…...
GBase 8a数据库双活容灾方案之主动灾备切换简介
南大通用GBase 8a数据库(gbase database)基于列存引擎与分片同步机制,构建了完整的双活容灾方案。核心同步工具GVR依托sync_clientsync_server组件,实现主备集群间增量数据毫秒级同步,点对点速度达450MB/s,支持同城双活…...
Anything to RealCharacters 2.5D转真人引擎:个性化AI写真服务开发入门
Anything to RealCharacters 2.5D转真人引擎:个性化AI写真服务开发入门 你有没有想过,把心爱的动漫头像、游戏角色或者二次元插画,一键变成一张以假乱真的真人照片?这听起来像是电影里的黑科技,但现在,借助…...
