C++中强制类型转换有四种:

1.static_cast

格式:static_cast<Type>(Value);

--用于基本类型间的转换,但不能用于基本类型指针间的转换;

int i = 0;
char c = 'C';
int *pi = &i;
char *pc = &c;
c = static_cast<char>(i); //没问题,将i转换为char型
pc = static_cast<char*>(pi); //不可以,不能用于指针间转换

--用于有继承关系类对象之间的转换和类指针之间的转换;

--static_cast是编译期进行转换的,无法在运行时检测类型,所以类类型之间的转换可能存在风险;

2.const_cast

--用于去除变量的const属性;

const int& j = 1;
int& k = const_cast<int&>(j); //将只读变量j去除const属性
k = 5; const int x = 2;
int& y = const_cast<int&>(x);
y = 3; printf("x = %d",x); //打印出来为2,因为编译到上面时已经将x = 2的值送进符号表
printf("y = %d",y); //打印出来为3,此时x和y的地址相同

3.dynamic_cast

--主要用于类层次间的转换,还可以用于类之间的交叉转换;

--dynamic_cast具有类型检查的功能,比static_cast更安全;

4.reinterpret_cast(直接从二进制位进行复制,不安全的转换)

--用于指针类型间的强制转换;

--用于整数和指针类型间的强制转换;

C++中类型强制转换的更多相关文章

  1. ARX中类型强制转换

    比如 克隆 clone, 获得的是一个acrxobject, acrxobject *pobj=pployline->clone(); acdbpolyline *ppoly=acdbpolyl ...

  2. OC中的类型强制转换

    在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用.例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是 ...

  3. C#高级编程笔记 2016年10月8日运算符和类型强制转换

    1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...

  4. c++中的强制转换static_cast、dynamic_cast、reinterpret_cast的不同用法儿

    c++中的强制转换static_cast.dynamic_cast.reinterpret_cast的不同用法儿   虽然const_cast是用来去除变量的const限定,但是static_cast ...

  5. C语言指针类型 强制转换

    关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...

  6. C#高级编程9-第7章 运算符和类型强制转换

    运算符和类型强制转换 1.运算符 运算符的简化操作 条件运算符: if-else的简化操作,也称三元运算符.如果条件为真,返回一个值,为假返回另外一个值. condition?true_value:f ...

  7. C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换

    第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...

  8. 3_PHP表达式_5_数据类型转换_类型强制转换

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP类型转换分为类型自动转换和类型强制转换. 3.5.2 类型强制转换 类型强制转换允许编程人员手动将变量的数据 ...

  9. C# 运算符和类型强制转换(6) 持续更新

    C#支持的运算符 https://msdn.microsoft.com/zh-cn/library/6a71f45d(v=vs.140).aspx checked 和 unchecked ; b++; ...

随机推荐

  1. 电话面试总结(问的很细).md

    String 和其他基本类型有什么区别 Tip 基本类型有几种 为什么要给String创建一个常量池而不给其他类创建常量池 常量池的定义是什么 垃圾回收机制是如何运行的 对新生代和老年代不同的处理机制 ...

  2. ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)

    上一章分享了如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权.涉及到的例子也以上一章的为基础.(ASP.NET Core 系列目录) 一.概述 ...

  3. 生产环境中Redis的key的设计

    问题:如果我们需要将MySql表的数据存储到Redis中该如何存储? 例如:有t_user表 id username email  11 leo  leo@163.com  22  laymans   ...

  4. Scrum的三个仪式:Sprint规划会,Scrum每日站会,Sprint评审会

    转自:http://blog.sina.com.cn/s/blog_6997f01501010m21.html Sprint Planning Meeting(Sprint规划会) 根据Product ...

  5. 大数乘法(适合k进制)

    #include<stdio.h> #include<string.h> #define N 10000 void inv(char str[],int n) { int i, ...

  6. hdu 2895 01背包 Robberies

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. Go语言基础之单元测试

    不写测试的开发不是好程序员.我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分. 这篇文章主要介绍下在Go语言中如何做单元测试和基 ...

  8. 024 实例5-身体质量指数BMI

    目录 一."身体质量指数BMI"问题分析 1.1 身体质量指数BMI 1.2 问题需求 二."身体质量指数BMI"实例讲解 2.1 身体质量指标BMI 2.1. ...

  9. Mybatis系列(二)配置

    Mybatis系列(二)配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configu ...

  10. sql 多行、一行 互转

    原始数据: 期望数据: IF OBJECT_ID('temp_20170701','u') IS NOT NULL DROP TABLE temp_20170701 CREATE TABLE temp ...