const_cast

2023-10-27

const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。

变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。

用法:const_cast<type>(expression)

通过const_cast运算符,也只能将const type*转换为type*,将const type&转换为type&。

也就是说源类型和目标类型除了const属性不同,其他地方完全相同。

#include<iostream>
using namespace std;
void ConstTest1(){
  
    
}
void ConstTest2(){
    int i;
    cout<<"please input a integer:";
    cin>>i;
    const int a = i;
    int &r = const_cast<int &>(a);
    r++;
    cout<<a<<endl;
}
int main(){
    ConstTest1();
    ConstTest2();
    return 0;
}
输出:
5
6
若输入7
则输出8

解释为什么输出8:

当常变量为 const int j =i 时,直接输出j时,编译器不能进行优化,也就是不能够直接用i代替j;

当常变量为const int j =5时,直接输出j时,编译器会进行优化,也就是用文字常量5直接代替j;


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

const_cast 的相关文章

随机推荐

  • Spring boot源码初识三 自定义starter

    项目结构 1 父级项目 my springboot starter 2 子module my spring boot starter 3 子module my spring boot starter autoconfigure 4 star
  • FAPI专题-6:5G FAPI接口 - 中文规范-2- 主要流程

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 117602098 目录 第1章 概述
  • Linux命令学习 - Locate

    Locate Linux locate命令简介 语法 参数 附加说明 updatedb的配置文件 etc updatedb conf 设置定时updatedb Crontab命令 Linux locate命令简介 locate locate
  • 常见的magent问题系列二--Fatal error: Call to a member function toHtml() on a non-object in ../../Layout.php

    有些模板不兼容 就会出现这种情况 Fatal error Call to a member function toHtml on a non object in home www yourMagento html gamemore app
  • mysql-按照指定字段排序

    select from order ORDER BY FIELD status UNPAID DELIVERED PAID WAIT DELIVER desc asc
  • uart和usart的区别

    uart 通用异步收发传输器 Universal Asynchronous Receiver Transmitter 通常称作UART 是一种异步收发传输器 是电脑硬件的一部分 它将要传输的资料在串行通信与并行通信之间加以转换 作为把并行输
  • 2023苹果CMS v10魔加主题1.1.6破解版 支持苹果CMS全部版本

    2023苹果cms v10魔加主题1 1 6破解版 支持苹果cms全部版本 后台快捷菜单配置添加魔加主题 mojia theme div class layui tab item blockquote class layui elem qu
  • jquery控制a标签点击后禁止再次点击

    function test 防止多次点击提交 if div a hasClass disabled return div a addClass disabled div a layui layer btn0 text 提交中 div a l
  • mysql5.7 主从安装

    1 安装mysql5 7 1 1 下载mysql源安装包 wget http dev mysql com get mysql57 community release el7 8 noarch rpm 1 2 安装mysql源 yum ins
  • 自学C++(四)//三目运算符

    三目运算符 阅读如下代码 if a gt b z a else z b 该代码可以化简为z a gt b a b z a gt b a b 该式是一个具有3个操作对象的条件表达式 其中的 加起来叫三目y运算符 三目运算符的优先级 执行方向是
  • 1.根据VADeaths数据集,分别绘制城镇居民与农村居民死亡情况的饼图,添加标题及图例说明,并分析图表。

    1 根据VADeaths数据集 分别绘制城镇居民与农村居民死亡情况的饼图 添加标题及图例说明 并分析图表 2 将第1题的结果保存为PNG文件格式 并储存到当前工作目录下 png 农村居民死亡情况 png width 1200 height
  • 关于codeblocks出现can't find compiler的解决方法

    关于codeblocks不能找到编译器的问题我来介绍一下解决的方法 1 首先要确定你的codeblocks是自带编译器的版本 你可访问codeblocks的官网 www codeblocks org 来到下载页面 如下图 点击第一个Down
  • 策略模式+Spring——让我们的代码更加高大上一点

    if else if else 代码是实际的项目代码中出现的比例还是蛮高的 特别是针对一些业务需求根据不同类型来进行不同的业务处理 针对这种业务模型 我们来试着使用策略模式结合Spring来优化我们的代码 让代码更加高大上一点 为了更好得结
  • n的阶乘求解方法

    n 的阶乘求解方法有以下三种 第一种通过递归计算 n int input def N a 定义一个函数进行阶乘计算 if a 1 return a else return N a 1 a print N n 第二种方法就是调用math库 通
  • 狂神说Mybatis最全课堂笔记

    Mybatis 自己整理的狂神说Mybatis学习笔记 环境 JDK1 8 Mysql 5 7 maven 3 6 1 IDEA 回顾 JDBC Mysql Java基础 Maven Junit SSM框架 配置文件 最好的方式 看官方文档
  • 小程序,压缩图片

    我们在小程序上 直接上传手机相册及拍照的图片时 因为图片过大 如10m 手机端不像我们再计算机上传输那么快 也没那么稳定 解决办法 在图片上传前压缩图片 压缩图片就是将图片尺寸 图片质量降低 把这两个指数降低到合适的规格 1 首先在 wxm
  • RK3399 Linux-SDK mipi屏幕驱动及调试

    一 流程及通路 我接触到的三款mipi屏幕 基本的点亮流程都是很一致的 就是背光使能 背光点亮 屏幕使能 reset引脚按指定时序 波形拉高或拉低 初始化序列命令发送 3399的linuxSDK中 包含一种类似通用的屏幕驱动 本文档以使用此
  • [Eagle API]使用python打印eagle指定文件夹下的所有子文件名

    api https www yuque com augus gsjgn eagle api pq0y2y 官方api源码 var requestOptions method GET redirect follow fetch http lo
  • mojo安装

    docker安装mojo 官网 https developer modular com login 很奇怪登录页面不显示 类似于网站劫持 docker 安装mojo带jupyterlab的方式 https hub docker com r
  • const_cast

    const cast是一种C 运算符 主要是用来去除复合类型中const和volatile属性 没有真正去除 变量本身的const属性是不能去除的 要想修改变量的值 一般是去除指针 或引用 的const属性 再进行间接修改 用法 const