pre{
line-height:1;
color:#1e1e1e;
background-color:#d2d2d2;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#800080;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#800000;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#1e1e1e;}
.operator {color:#008000;font-weight:bold;}

static_cast

用法:static_cast < type-id > ( expression )

 

该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。

 

注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。

 

它主要有如下几种用法:

 

①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。

 

进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;

 

进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。

 

②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。

 

③把空指针转换成目标类型的空指针。

 

④把任何类型的表达式转换成void类型。

 
 
C++中static_cast和reinterpret_cast的区别
 
C++primer第五章里写了编译器隐式执行任何类型转换都可由static_cast显示完成;reinterpret_cast通常为操作数的位模式提供较低层的重新解释
 

1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。因此,被做为隐式类型转换使用。比如:

int i;
float f = 166.71;
i = static_cast<int>(f);

此时结果,i的值为166。

 

2、C++中的reinterpret_cast主要是将数据从一种类型的转换为另一种类型。所谓“通常为操作数的位模式提供较低层的重新解释”也就是说将数据以二进制存在形式的重新解释。比如:

 
 int i;
char *p = "This is a example.";
i = reinterpret_cast<int>(p);
 

此时结果,i与p的值是完全相同的。reinterpret_cast的作用是说将指针p的值以二进制(位模式)的方式被解释为整型,并赋给i,//i 也是指针,整型指针;一个明显的现象是在转换前后没有数位损失。

本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。

 

static_cast .xml的更多相关文章

  1. Duilib源码分析(三)XML解析器—CMarkup

    上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...

  2. DuiLib 源码分析之解析xml类CMarkup & CMarkupNode cpp文件

    时隔5个月才有时间接着写未完成的实现部分,也是惭愧呀 选几个关机的函数来解析,一些get方法就忽略掉吧 CMarkupNode 与 CMarkUp 互为友元类,CMarkUp 实现解析,CMarkup ...

  3. 判断两个XML文件结构与内容是否相同

    1. 引入 目前公司的这款软件导入导出数据库信息的方法是:组织数据的内容和结构  利用MS com的sax解析 储存数据为XML格式 优点是可以选择部分导出 缺点是速度慢文件导出的文件庞大,若客户出现 ...

  4. Duilib XML嵌套

    duilib使用嵌套xml可以简化代码的书写,有利于模块化的页面布局分解,duilib库的xml嵌套主要有两种方式 方式一.以创建控件的方式嵌套xml 在CreateControl(LPCTSTR p ...

  5. duilib 实现 XML重用(item完全重合的CList)

    最近做一个项目,界面库用的是duilib. 软件首页的左侧是一个机型列表,右侧是机型信息及其他信息,点击左侧的机型,右边跟着变为对应的信息. 由于右侧信息比较复杂,还有进度条什么的,所以如果右侧只用一 ...

  6. 非标准的xml解析器的C++实现:三、解析器的初步实现

    如同我之前的一篇文章说的那样,我没有支持DTD与命名空间, 当前实现出来的解析器,只能与xmlhttp对比,因为chrome浏览器解析大文档有bug,至于其他人实现的,我就不一一测试了,既然都决定自己 ...

  7. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  8. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  9. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

随机推荐

  1. RAID

    RAID(is short for redundant arrays of independent disks) 独立/廉价磁盘冗余阵列.基本思想:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使 ...

  2. C#添加日志

    /// <summary> /// 记录日志 /// </summary> /// <param name="msg"></param&g ...

  3. C# 将字符串转化成流,将流转换成字符串

    using System; using System.IO; using System.Text; namespace CSharpConvertString2Stream { class Progr ...

  4. Linux下scp的用法

    scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令.有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要 ...

  5. enable c++11 in autoconf in fucking gnu auto tools

    configure.ac => CXXFLAGS="$CXXFLAGS -std=c++14" set CXXFLAGS  => std=c++14 well done ...

  6. C++ new、delete

    C++中向系统申请堆内存的方法为使用new.new[]操作符,new申请单个对象的内存,new[]申请对象数组的内存.对应的delete.delete[]操作符将new.new[]操作符申请到的内存还 ...

  7. 【笨嘴拙舌WINDOWS】实践检验之屏幕取色

    实践是检验真理的唯一标准 要取得屏幕的颜色,首先需要创建一个屏幕DC,然后使用该DC,调用GetPixel就可以了 "Note:GetPixel传入的DC应该是屏幕的DC,而不是桌面的DC, ...

  8. 《Qt 实战一二三》

    简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...

  9. IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)(转载)

    继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...

  10. HDU 2147 (博弈) kiki's game

    无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u= 题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态. 从http://ww ...