栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ | 四种类型转换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ | 四种类型转换

文章目录
  • 前言
  • 一、类型转化的四种方式
  • 二、每个类型转换的使用以及注意事项
    • 1.const_cast
    • 2.static_cast
    • 3.reinterpret_cast
    • 4.dynamic_cast
  • 总结


前言

简单记录一下C++中常用的四种类型转换。


提示:以下是本篇文章正文内容,下面案例可供参考

一、类型转化的四种方式

1.去常转换:const_cast
2.静态转换:static_cast
3.动态转换:dynamic_cast
4.重新解释:reinterpret_cast

二、每个类型转换的使用以及注意事项 1.const_cast

const_ cast(a) 常被用于去除这里a变量或表达式的const属性, a的类型就是T

作用:
把常量指针或常量引用转换为非常量指针或非常量引用,并仍然指向原来的对象;把非常量指针或非常量引用转换为常量指针或常量引用,并仍然指向原来的对象;强制转换类型必须是指针*或引用&。

2.static_cast

static_ cast它能在内置的数据类型间互相转换,对于类只能在有联系的指针类型间进行转换.
1.用于基本类型间的转换
2.不能用于基本类型指针间的转换

3.于有继承关系类对象之间的转换和类指针之间的转换
(派生类转换成基类时安全(上行转换),基类转换成派生类时不安全(下行转换))


4.无类型指针的转换(不安全)

int main()
{
	int a=10;
	void*vi=&10;
	float*fp=static_cast(vi);//不安全,当使用读取*fp的值时会扩大读取的字节个数,造成读取数据错误的情况。
}
3.reinterpret_cast

reinterpret_ cast任何指针都可以转换成其它类型的指针,T必须是一个指针、 引用、算术类型、指向函数的指针或指向一个类成员的指针。任何指针都可以转换成其它类型的指针,不安全的转换。

4.dynamic_cast

dynamic_ cast 转换符只能用于指针或者引用。dynamic_cast转换符只能用于含有虚函数的类。dynamic_ cast转换操作符在执行类型转换时首先将检查能否成功转换,如果能成功转换则转换之,如果转换失败, T是指针则反回一个nullptr,如果是转换的是T引用,则抛出一个bad_ cast异常, 所以在使用dynamic_ cast转换之间应使用if语句对其转换成功与否进行测试。
使用条件:公有继承且有虚函数的下行转换,否则会报错!

示例1:

示例2:


总结

提示:这里对文章进行总结:

RTTI(Run Time Type ldentification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引|用所指的对象的实际派生类型。

RAII也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021925.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号