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. 你是合格的程序员吗?(欢迎大家自测)
  3. Spring 更好地处理 Struts 动作
  4. EDAS 4.0 助力企业一站式实现微服务架构转型与 K8s 容器化升级
  5. boost::callable_traits的is_reference_member的测试程序
  6. Robochameleon——Quick Start Guide
  7. 三行代码隐藏所有console.log
  8. mysql视图什么时候用_Mysql为什么要使用视图?
  9. J2EE架构师路线脑图
  10. 常用Java静态代码分析工具的分析与比较
  11. PS学习笔记一:跟着李涛学PS第一讲——光和色的关系
  12. Tinker爬坑之路
  13. 基于MATLAB霍夫变换的复杂情况下车道线检测
  14. 前沿 | 社区问答系统及相关技术
  15. OpenCV:将一个三角形形变到另一个三角形
  16. 移动互联网感言(董烨/Joven.Dong)
  17. vue3+vite UC浏览器兼容
  18. 关于陌陌和微信表情页与输入法之间切换的问题
  19. 映射报错怎么解决 Ambiguous mapping. Cannot map ‘basicPersonStreamDataController‘ method
  20. 【编程语录】59条令人捧腹但真实的程序员编程语录

热门文章

  1. 下面是刚颁布的《中国贫富标准线》,看看我们生活在哪个层次?
  2. 怎么做好B2C电商平台的粉丝深度与精细化运营?
  3. chrome浏览器devtools切换主题(亮色,暗色)
  4. 各大期货交易所保证金收取方式说明
  5. 内连接和外连接 驱动表
  6. 快递100 实时查询
  7. L012-老男孩linux高端运维课程—linux系统文件属性知识深入详解
  8. 代码随想录——Dota2参议院
  9. GD32和STM32区别
  10. 计算机开机怎么设置网络连接,win7系统如何设置开机自动连接宽带 设置宽带自动联网的办法...