C++的四种类型转换

static_cast

静态类型转换:用于基本类型之间的转换,有继承关系之间的转换,void* 与其他指针类型转换。

编译时候检查,无运行时开销,不保证安全性,继承体系可能因类型不匹配导致未定义行为

cpp 复制代码
class Base{
    Base(){
    }
    ~Base(){}
};

class Child:public Base
{
    
};
//派生类指针或引用转为基类表示
Base * base = new Child;//进行上行转换时安全的,因为new申请的地址空间大于base需要的地址空间
Child * child = static_cast<Child *> (base);

dynamic_cast

动态类型转换:note:如果发生多态,那么类型转换必定是安全的。

运行时检查类型有效性,只有转换时安全的,那么才会进行转换。

const_cast

常量类型转换:用于移除或者添加const限定符

不修改底层数据,仅仅修改编译器对类型的解释

cpp 复制代码
const char* msg = "Hello";

const_cast<char*>(msg)

note:不能对非指针类型或者引用使用

​reinterpret_cast

重新解释类型转换

低层次的位模式重新解释

高度不安全,依赖平台和编译器实现,不推荐使用

相关推荐
txinyu的博客几秒前
解析muduo源码之 ThreadLocal.h
c++
橘子师兄2 分钟前
C++AI大模型接入SDK—ChatSDK封装
开发语言·c++·人工智能·后端
@ chen10 分钟前
Spring事务 核心知识
java·后端·spring
aithinker15 分钟前
使用QQ邮箱收发邮件遇到的坑 有些WIFI不支持ipv6
java
上天_去_做颗惺星 EVE_BLUE17 分钟前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
2401_8576835418 分钟前
C++中的原型模式
开发语言·c++·算法
s1hiyu27 分钟前
C++动态链接库开发
开发语言·c++·算法
(❁´◡`❁)Jimmy(❁´◡`❁)28 分钟前
CF2188 C. Restricted Sorting
c语言·开发语言·算法
星火开发设计33 分钟前
C++ 预处理指令:#include、#define 与条件编译
java·开发语言·c++·学习·算法·知识
许泽宇的技术分享35 分钟前
第 1 章:认识 Claude Code
开发语言·人工智能·python