(给CPP开发者加星标,提升C/C++技能)

来源:melonstreet https://www.cnblogs.com/QG-whz/p/4509710.html

static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四个。本节介绍static_cast操作符。

  • 编译器隐式执行的任何类型转换都可以由static_cast来完成,比如int与float、double与char、enum与int之间的转换等。

double a = 

当编译器隐式执行类型转换时,大多数的编译器都会给出一个警告:

2010 projects\

使用static_cast可以明确告诉编译器,这种损失精度的转换是在知情的情况下进行的,也可以让阅读程序的其他程序员明确你转换的目的而不是由于疏忽。

把精度大的类型转换为精度小的类型,static_cast使用位截断进行处理。

  • 使用static_cast可以找回存放在void*指针中的值。

double a = 

static_cast也可以用在于基类与派生类指针或引用类型之间的转换。然而它不做运行时的检查,不如dynamic_cast安全。static_cast仅仅是依靠类型转换语句中提供的信息来进行转换,而dynamic_cast则会遍历整个类继承体系进行类型检查,因此dynamic_cast在执行效率上比static_cast要差一些。现在我们有父类与其派生类如下:

class ANIMAL{

此时我们进行派生类与基类类型指针的转换:注意从下向上的转换是安全的,从上向下的转换不一定安全。

int main(){
  • static_cast可以把任何类型的表达式转换成void类型。

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

  • 另外,与const_cast相比,static_cast不能把换掉变量的const属性,也包括volitale或者__unaligned属性。

推荐阅读

(点击标题可跳转阅读)

起底 C++ Range 令人惊讶的局限性!

C++ 中是如何调用 C 接口的?

看完本文有帮助?请分享给更多人

关注「CPP开发者」加星标,提升C/C++技能

好文章,我在看❤️

dim private public static_C++ 强制类型转换操作符 static_cast相关推荐

  1. C/C++ 之 C++强制类型转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)

    文章转载自:https://www.cnblogs.com/chenyangchun/p/6795923.html .在了解这块时,发现了这篇文档,感觉写的很不错! c强制转换与c++强制转换 c 语 ...

  2. C++ 强制类型转换:static_cast、dynamic_cast、const_cast 和 reinterpret_cast

    C++ 强制类型转换:static_cast.dynamic_cast.const_cast 和 reinterpret_cast static_cast dynamic_cast const_cas ...

  3. C++强制类型转换操作符 dynamic_cast

    dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...

  4. project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast

    dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...

  5. 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.

    呵呵,今天来好好看看着几个转换操作符的用法.以前老是看着眼熟,但是用着手生.今天决定搞定这些个东西. 在C语言中类型转换有几种方式: 1.      (expression). 在表达式外边加括号,由 ...

  6. C++ 强制类型转换操作符(static_cast、dynamic_cast、const_cast和reinterpret_cast)

    C++中的四种操作符形式类型转换 1.static_cast (静态类型转换) 主要使用场景:适用于将void*转换为其他的指针 int a = 100; void* pv = &a; //i ...

  7. C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

    一.static_cast:static_cast<new_type> (expression) static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为 ...

  8. dim private public static_static方法 (静态方法)

    1.什么是方法 2.方法的作用 3.方法的语法(定义语法+调用语法+种类) 3.方法重载 1.什么是方法 生活:在生活中某个事物具备的一个功能,这个功能通常会被封装起来,我们 使用者不需要关心内部具体 ...

  9. dim private public static_PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问: private: 表示私有的,只有本类内部可以使用: protec ...

最新文章

  1. 2020版北大核心期刊目录_榜单|2020武大版核心期刊RCCSE高职高专成高院校学报类自然科学综合、社会科学综合学科权威、核心及准核心期刊目录...
  2. Java 组合模式及其应用
  3. Kali Linux常用服务配置教程安装及配置DHCP服务
  4. 零基础学习Java,全方位知识点总结!
  5. 一个好用的Chrome倒数计时器扩展 - Calendar and Countdown
  6. 为提高研发和测试质量而规范Scrum项目需求描述
  7. ffmpeg 将拆分的数据合成一帧_FFmpeg + OpenGLES 实现视频解码播放和视频滤镜
  8. matlab转差频率控制,转差频率控制的异步电机调速系统的研究
  9. alook浏览器_alook浏览器下载-Alook浏览器iOS版下载 苹果版v10.8-PC6苹果网
  10. java的 import注解_[java]一分钟学会spring注解之@Import注解
  11. 是==和!=相互依赖?
  12. MySQL连接localhost失败
  13. 电脑怎么重装系统后显示器没有信号了
  14. python与vb可以互换吗_VB转换为Python:在线把VB代码转为Python
  15. C语言新手入门贪吃蛇的链表实现-控制光标位置,流畅不闪屏
  16. 中国知名网站(alexa top 500)
  17. OceanBase 社区版 3.1.3 Docker镜像尝鲜,能错过?不存在的
  18. 怎样快速备份电脑文件?
  19. Nginx(1)基础部分
  20. Android 模拟器实现打电话

热门文章

  1. 2020-11-5(安卓)
  2. docker,mysql,wordpress搭建个人博客
  3. Linux Security Module逆向分析实战
  4. python爬取数据存入mysql
  5. 宏病毒的研究与实例分析06——终结篇 进击的MACRO
  6. 1.10 throws和throw:声明和抛出异常
  7. Servlet实现的个人所得税计算器
  8. VScode使用python的yapf库
  9. 概率论 第三章 多维随机变量及其分布
  10. jQuery的过滤遍历