const_cast

修改类型的const或volatile属性,添加const/删除const。(好像大多是删除

int n = 5;
int *k1 = const_cast<int*>(&n);  //指针
*k1 = 1;
int &k2 = const_cast<int&>(n);   //引用
k2 = 2;const int a = 10;
int* b = const_cast<int*>(&a);
*b = 11;//指针b的属性变成可读可写

但是,对声明为const的变量来说,常量就是常量,任你各种转化,常量的值就是不会变。
因此,const_cast 的主要作用为:

函数的形参不是const,且函数不会改动参数值,则使用const_cast

const int constant = 21;
InputInt(constant); // error: “InputInt”: 不能将参数 1 从“const int”转换为“int *”
InputInt(const_cast<int*>(&constant)); // 用来将const转化为非const

static_cast  将隐式转换明确表示出来

1. 用于内置数据类型的转化
2. 把void类型指针转为目标类型指针(不安全)
3. 子类与父类的转换(子类转父类安全,父类转子类不安全)
不可用于指针之间的转换

父转子不安全的原因:子类的成员/方法往往比父类多,假如原父指针指向父类对象,强制转换成子类指针时,调用子类的方法,但父对象中是没有这个方法的,会出问题。如果用dynamic_cast就直接阻止了这种转换。

dynamic_cast 

1. 用于含虚函数的父类和子类的转换,主要用于父类转子类。子类转父类时作用与static_cast一样。主要是弥补static_cast父转子的不安全

// 父转子时,父类的指针必须指向子类对象 (这也是为什么必须有虚函数)base *bs = new derive();
derive *de = dynamic_cast<derive*>(bs); // 成功base *bs2 = new base();
derive *de2 = dynamic_cast<derive*>(bs2); // 不成功,阻止该操作

reinterpret_cast

reinterpret代替显示转换,用于转换各种高风险的转换

原理是,直接把数据类型A的地址解释成另一个数据类型B的地址,逐个比特复制

c++ | cast相关推荐

  1. Go 知识点(12) — 类型转换以三方库 cast

    类型转换在编程语言中是很常见的操作,在 Go 语言中其类型转换有下面一些注意点. 1. 整数类型之间的转换 对于整数类型转换,原则上目标类型的取值范围要包含被转换值,也就是说要转换类型的值取值范围要小 ...

  2. tf.cast()数据类型转换

    tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...

  3. tf.cast() 张量数据类型转换

    tf.cast() 数据类型转换 import tensorflow as tf t1 = tf.Variable([1,2,3,4,5]) # 生成张量 t1 <tf.Variable 'Va ...

  4. as cast float server sql_SQL-Server(五)T-SQL语言

    5.1 T-SQL语言简介 T-SQL语言由以下几部分组成: 1.数据定义语言(Data Definition Language,DDL).DDL用于执行数据库任务,对数据库及数据库中的各种对象进行创 ...

  5. 《MySQL CAST与CONVERT

    MySQL中的CAST()和CONVERT()可用来获取一个类型的值,并产生另一个类型的值. CAST(value as type) CONVERT(value, type) 可以转换的类型是有限的, ...

  6. SQL 语句转换格式函数Cast、Convert

    CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日 ...

  7. oracle+cast函数+长度,oracle cast() 函数问题

    oracle cast() 函数问题 关键字: oracle cast() 函数问题 SQL> create table t1(a varchar(10)); Table created. SQ ...

  8. java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer

    java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer 1.改sql select ...

  9. sql server 2005 T-SQL CAST 和 CONVERT (Transact-SQL)

    将一种数据类型的表达式显式转换为另一种数据类型的表达式.CAST 和 CONVERT 提供相似的功能. Transact-SQL 语法约定 语法 Syntax for CAST: CAST ( exp ...

  10. sql数据类型转换(cast() and convent())函数)

    sql数据类型转换(cast() and convent())函数) sql数据类型转换(cast() and convent())函数) 当 Microsoft® SQL Server™ 2000 ...

最新文章

  1. 物联网的层次结构如何划分?
  2. 【铜】第174-9篇 一对一视频录制(九)一对多学生端删除白板及nginx下配CI
  3. 2021.04.07 oppo HR面
  4. 交换机无法ping通之谜
  5. Spring-AOP @AspectJ切点函数之within()
  6. c语言uint赋值给int,如何在C#中将uint转换为int?
  7. 程序清单8-9 回送所有命令行参数和所有环境字符串
  8. 用Matlab实现字符串分割(split)
  9. mysql配置连接远程_MySql配置远程访问
  10. 个人工作室的网站开发规范V1.0
  11. Swing学习笔记1-----Swing组件类的层次
  12. 语音识别代码_Povey正式出任小米语音首席科学家,小米移动端框架MACE全面支持Kaldi...
  13. 2011 微软MVP全球峰会美国行之飞离北京
  14. 因多次登录失败导致的账户锁定,ssh无法登录处理
  15. 专家系统的产生和发展
  16. 即拿即用-Android单线程断点下载
  17. 计算机的计量单位以及常见的数据类型
  18. 问卷网金数据可行性分析
  19. 知识图谱入门 (一) 知识图谱与语义技术概览
  20. 警报!AIGC狂飙,小心你的银行信息被偷窥

热门文章

  1. 零基础学java web开发_从零基础学Java成为一个专业的java web 开发者
  2. 老旧管理系统过时碍事?0元薅老牌厂商羊毛免费焕新
  3. 全新一代解决方案 | 数字冰雹 CIM-智慧机房数字孪生运维系统
  4. Push to origin/master was rejected的解决办法
  5. 史诗轨迹的传说!盘点Falcom十大经典游戏系列
  6. 适合ipad的python编程软件-iPad编程软件推荐(一) —— Pythonista 3
  7. 滴滴派单和Uber派单对比
  8. 数学 {邻域,区间,极值,最值,上界,有界,上确界,柯西序列,完备空间,单调有界定理,拓展实数集}
  9. 1009 Triple Inversions
  10. 流形结构、流形学习、图嵌入