文章目录

  • 一、四种类型转换
    • 1. static_cast<>()
    • 2. const_cast<>()
    • 3. reinterpret_cast<>()
    • 4. dynamic_cast<>()

一、四种类型转换

C++中有四种强制类型转换,分别是:

  1. static_cast<>();
  2. const_cast<>();
  3. reinterpret_cast<>();
  4. dynamic_cast<>();

为什么C++要有这四种类型转换,原因是在C语言中,强转的方式只是在变量前面加上要转换的类型,只知道这样就转换了,但不清楚为什么要转换,为了明确这个意义——让人看到就知道转换的意义,所以C++产生了这四种类型转换。

1. static_cast<>()

这是一种针对基本数据的转换,即对值得转换。

示例:
实际上,这两种写法是等价的,不过C++的写法更明显,让人知道目的。

 int a = 10;float at = 2.5;// C语言中a = (int)at;at = (float)a;// C++中a = static_cast<int>(at);at = static_cast<float>(a);

2. const_cast<>()

去常性的转换
在C语言中的写法不明确,C++中的很容易看出是去常性的转换。static_cast是无法去掉常性的。

 const int a = 10;// C语言中int* pa = (int*)&a;// C++中int* pa2 = const_cast<int*>(&a);

3. reinterpret_cast<>()

重新解释转换
对指针的解释能力做出强转

int main(void)
{int a = 10;int* p = &a;// C语言char* cp = (char*)&a;// C++char* cp2 = reinterpret_cast<char*>(&a);
}

4. dynamic_cast<>()

针对动态联编的转换,在以前的学习中了解到,动态联编的形成条件有:
公有继承,派生类实现了基类的虚函数,基类指针指向派生类对象。那么C++提供了动态转换,来使人清楚的知道这是一种为动态联编提供的机制。

int main(void)
{Object* op = nullptr;Base* bp = nullptr;Object obj;Base base;op = dynamic_cast<Object*>(&base);bp = dynamic_cast<Base*>(&obj); // errreturn 0;
}

C++ :四种强制类型转换相关推荐

  1. C++中的向上类型转换和向下类型转换+四种强制类型转换

    转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...

  2. C++的四种强制类型转换

    C++的四种强制类型转换,所以C++不是类型安全的.分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 为什么使用C风格的强制 ...

  3. C++四种强制类型转换

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 C++四种强制类型转换 一.static_cast 二.dynamic_cast 三.const_cast 四.reinterpret ...

  4. C++四种强制类型转换解析

    C++的四种强制类型转换主要是static_cast<>,const_cast<>,reinterpret_cast,dynamic_cast<> 接下来依次介绍一 ...

  5. 逐梦C++之四:四种强制类型转换

    1.总括四种强制类型转换 static_cast const_cast dynamic_cast reinterpret_cast 2.static_cast static_cast是最常用的强制类型 ...

  6. C++ 四种强制类型转换

    C++ 类型转换(C风格的强制转换): 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型.其中数值型包括 整型与浮点型:字符型即为char. (1)将浮点型数据赋值给整型变量时,舍 ...

  7. C++ 类型转换 :C语言的类型转换、C++的四种强制类型转换、explicit

    文章目录 C语言中的类型转换 隐式类型转换 显式类型转换 C++ 强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast explici ...

  8. C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit

    文章目录 C语言类型转换 隐式类型转换 显式类型转换 C++ 强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 类的隐式类型转换 ...

  9. C++中四种强制类型转换的区别

    使用标准C++的类型转换符:static_cast.dynamic_cast.reinterpret_cast和const_cast. 1.static_cast     用法:static_cast ...

最新文章

  1. python pandas rename_使用Pandas重命名文件
  2. python分支结构使用if保留字吗_关于Python分支结构,以下选项中描述不正确的是...
  3. IDEA中Maven项目使用Junit4单元测试的写法
  4. Linux 命令(141)—— nmap 命令
  5. Bailian2757 最长上升子序列【DP】
  6. [Usaco2007 Demo]City skyline
  7. atitit.基于http json api 接口设计 最佳实践 总结o7
  8. thinkpad x250装黑苹果教程_GitHub - siweijianrong/Hackintosh: Hackintosh黑苹果长期维护机型EFI及安装教程整理...
  9. 简单的卷积神经网络编程,python卷积神经网络训练
  10. 生活随记 - 尝试与师傅沟通争取自己的权益
  11. unity学习手记之角色动画
  12. 计算机网络:网络传输介质
  13. 除了提升听感,鲸云音效对网易云音乐还意味着什么?
  14. qgraphicsitem 复制副本,QGraphicsItem:调用paint函数时
  15. [转]从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
  16. window.print()打印网页局部内容
  17. python函数整理_python内置函数整理
  18. Zabbix5.0网易邮箱163告警详细步骤
  19. [excel]如果去掉科学计数法,以及将正常的减号进行计算
  20. scratch案例——狗狗的奇幻之旅

热门文章

  1. 【三维目标检测】Part-A2(一)
  2. java金花_炸金花绝对大小计算、比较及排序算法(Java),包含花色参与和不参与大小比较...
  3. 深度学习——人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
  4. 计算机奖项含金量排名,大家一起拍下NBA常规赛各项奖项含金量排名,都是个人观点,讨论讨论...
  5. 300万+企业财税服务平台微企宝,将于8月8日全球首发QB生态通证
  6. 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
  7. 嘀嘀打车起家的辛苦历程
  8. 哈理工 第五届程序设计大赛——B.沼跃鱼
  9. 赤裸裸的统计学:除去大数据的枯燥外衣,呈现真实的数字之美 - 电子书下载 -(百度网盘 高清版PDF格式)...
  10. 生活无大事,生活无小事,需用心经营才行