【C++】类型转换(学习笔记)
1、 隐式类型转换,相关联的类型(e.g.int vs double)之间可以发生隐式类型转换。
比如,在条件中,非布尔类型转为布尔类型;
初始化时,初始值变为变量类型;
赋值时,右值变成左侧的类型;
运算过程中的类型统一;
数组被转换成指向首元素的指针;
2、 显式类型转换
Cast-name<type> expression;
int i,j;
double s = statc_cast<double>(j)/i;
1) static_cast 具有明确定义的类型转换,不能包含底层const;
在把较大数据类型赋值给较小数据类型时非常有有用。(为什么呢?强制类型转换会丢失精度,由大变小不会超出范围,但是由小变大不一定)
2) cosnt_cast 只能改变运算对象的底层const,只改变表达式const属性而不改变类型。一般是去掉const性质,使之可以改变对象的值(如果对象本身不是const的话,否则会报错)
const char *pc;
char *p = const_cat<char*>(pc); //p是一个非常量指针,与pc指向相同区域
//注意type与原类型一样,没有改变,只改变了const
3) reinterpret_cast 为运算对象的位模式提供较低层次上的重新解释。(非常危险)
4) dynamic_cast 支持运行时类型识别
什么时候需要dynamic_cast呢?
举个例子:基类的指针或者引用想要调用派生类的函数时,这个函数却不是虚函数,可以通过dynamic_cast进行强制将基类指针或者引用转换成派生类的指针或引用。
Dynamic_cast<type*>e;
Type必须是类类型,而且一般应该含有虚函数(不懂为啥)。
e必须符合三个条件中的一个①e是type的公有派生类②e是type的公有基类③e的类型就是type
如果转换失败,指针转换类型失败会返回0,引用类型失败抛出bad_cast异常
【C++】类型转换(学习笔记)的更多相关文章
- [原创]java WEB学习笔记68:Struts2 学习之路-- 类型转换与复杂属性配合使用
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- [Golang学习笔记] 06 程序实体3 类型断言和类型转换
类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>. ...
- Dart学习笔记-运算符-条件表达式-类型转换
Dart学习笔记-运算符-条件表达式-类型转换 一.运算符 1.算术运算符 + (加)- (减)* (乘)/ (除)~/ (取整) %(取余) 2.关系运算符 == (等等) != (不等) > ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- ASP.Net MVC开发基础学习笔记:一、走向MVC模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
随机推荐
- 几种提高jQuery性能的代码
1.jQuery对象缓存 如果同一元素被查找多次时,就应该将该jQuery对象缓存起来,不然每次查找都要遍历整个文档. 使用下边的代码做个简单的测试 <!DOCTYPE html PUBLIC ...
- 转:jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- Tarjan 算法&模板
Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连 ...
- 【HDU】4035 Maze
http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:给一棵n个节点的树,每个节点有值k[i]和e[i],分别表示k[i]概率走向1号节点,e[i]概率获 ...
- Netty_Netty系列之Netty百万级推送服务设计要点
1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...
- 从一个QQ群友那儿偷来的js图形 ^_^
<script type="text/javascript"> var head=document.createElement("HEAD"); d ...
- C#常用方法集合
public class Utility:Page { #region 数据转换 /// <summary> /// 返回对象obj的String值,obj为null时返回空值. /// ...
- Fling——K
K. Fling Fling is a kind of puzzle games available on phone.This game is played on a board with 7 ro ...
- 兼容所有浏览器的设为首页收藏本站js代码
大家发现传统的收藏本站按钮在360浏览器下面没有效果了,但是360浏览器用户群却非常之大.所以我们在网上找到一个兼容所有浏览器的收藏本站解决方案,具体功能如下: 设为首页 和 收藏本站js代码 兼容I ...
- Centos 6.5 挂载硬盘 4K对齐 (笔记 实测)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Linux centos 2.6.32-431.17.1.el6.x86_64(Centos-6.5-x86_ ...