C++ const_cast用法
const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。
变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。
用法:const_cast<type>(expression)
通过const_cast运算符,也只能将const type*转换为type*,将const type&转换为type&。
也就是说源类型和目标类型除了const属性不同,其他地方完全相同。
1 #include<iostream> 2 using namespace std; 3 void ConstTest1(){ 4 const int a = 5; 5 int *p; 6 p = const_cast<int*>(&a); 7 (*p)++; 8 cout<<a<<endl; 9 cout<<*p<<endl; 10 11 } 12 void ConstTest2(){ 13 int i; 14 cout<<"please input a integer:"; 15 cin>>i; 16 const int a = i; 17 int &r = const_cast<int &>(a); 18 r++; 19 cout<<a<<endl; 20 } 21 int main(){ 22 ConstTest1(); 23 ConstTest2(); 24 return 0; 25 } 26 输出: 27 5 28 6 29 若输入7 30 则输出8
解释为什么输出8:
当常变量为 const int j =i 时,直接输出j时,编译器不能进行优化,也就是不能够直接用i代替j;
当常变量为const int j =5时,直接输出j时,编译器会进行优化,也就是用文字常量5直接代替j;
转载于:https://www.cnblogs.com/teng-IT/p/5981294.html
C++ const_cast用法相关推荐
- C++中static_cast, dynamic_cast, const_cast用法/使用情况及区别解析
目录 第1部分. 隐式类型转换 第2部分. 显式类型转换 static_cast dynamic_cast reinpreter_cast const_cast 首先回顾一下C++类型转换: C++类 ...
- C++ const_cast用法
const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除). 变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的c ...
- 浅谈static_cast、dynamic_cast、const_cast、reinterpret_cast用法
C++中的类型转换分两种:隐式类型转换和显式类型转换. 隐式转换,是标准的转换,很多时候是默认情况下由编译器进行转换: 显式转换,在C++中有四个类型的转换符:static_cast.dynamic_ ...
- static_cast, dynamic_cast, const_cast
首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为"标准转换",包括以下几种情况: 1) 算术转换(Arithmetic ...
- C++ reinterpret_cast,const_cast等 显式类型转换总结
C++代码 #include<iostream.h> int main(void) { //reinterpret_cast //将一个类型指针转换为另一个类型指针,这种在转换不修改指 ...
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的 ...
- static_cast, dynamic_cast, const_cast学习和探讨
一 C语言中存在着两种类型转换: 隐式转换和显式转换 隐式转换:不同数据类型之间赋值和运算,函数调用传递参数--编译器完成 1) 算术转换(Arithmetic conversion) : 在混合类型 ...
- C++四种强制类型转换 dynamic_cast,const_cast,static_cast,reinterpret_cast
综述 dynamic_cast 用于多态类型的转换 static_cast 用于非多态类型的转换 const_cast 用于删除 const.volatile 和 __unaligned 特性 r ...
- 【C++专题】static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换. 第1部分. 相关概念解释 上行转换(up-casting):把子类的指针或引用转换成基类表示. 下行转换(down-ca ...
最新文章
- mac 安装mqtt
- SAP相关会计科目的设置OBYC
- python程序开子进程打包成exe文件运行炸内存原因剖析
- xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影
- AngularJs详细
- 模拟器显示空白图片_Kawaks街机模拟器,还是小时候的味道!
- 安装Windows10 64位提示“只能安装到GPT分区”,怎么办?
- ZDI 公布2020年 Pwn2Own 东京赛规则和奖金
- 分值展示时,只显示评委分数,但不显示评委名称或评委编号等标识,如何进行前期准备操作?
- 大一计算机word排版试题,Word排版练习题
- 进销存管理系统基本功能
- android解锁方法,手机如何解锁密码 几种安卓手机解锁方法介绍
- MaxCompute SQL引用第三方Base64JAR实现编解码
- Python暂停的几种方法
- 天下谁人不识君,体面的礼品
- Linux下2D、3D的测试软件glxgears
- Spring+Hibernate双数据源测试Mysql集群读写分离(转自http://blog.csdn.net/hzw2312/article/details/9083519)
- Git版本控制工具和Github代码托管平台
- 微信小程序-查询快递
- 详解JUC高并发编程