C++的类型转换

static_cast 转换

隐式类型转换

c 复制代码
 int x = 0;   
 long y = static_cast<long> (x);

reinterpret_cast 转换

显示类型转换

c 复制代码
int* px = &x;
int p = reinterpret_cast<int>(px);

const_cast 转换

在有不同 cv 限定的类型间转换。通常用于 const 属性转非 const 属性

c 复制代码
int a = 1;
//int* pa = (int*)&a;
int* pa = const_cast<int*>(&a);      
(*pa)++;      
cout << "a: " << a << endl;                         
cout<<"*pa: " << *pa; 

dynamic_cast 转换

沿继承层级向上、向下及侧向,安全地转换到其他类的指针和引用。

父类类型的指针转换为子类类型的指针或引用时,可能会发生越界,如下图所示

dynamic_cast 强转时,父类要有虚函数

如果未能转换成功,返回空

c 复制代码
class A
{
public :
virtual void f(){}
};
class B : public A
{};
void fun (A* pa)
{
// dynamic_cast会先检查是否能转换成功,能成功则转换,不能则返回
B* pb1 = static_cast<B*>(pa);
B* pb2 = dynamic_cast<B*>(pa);
cout<<"pb1:" <<pb1<< endl;
cout<<"pb2:" <<pb2<< endl;
}
int main ()
{
  A a;
  B b;
  fun(&a);
  fun(&b);
  return 0;
}
相关推荐
CoderCodingNo3 分钟前
【GESP】C++五级练习(前缀和练习) luogu-P1387 最大正方形
开发语言·c++·算法
编程之路从0到17 分钟前
JSI入门指南
前端·c++·react native
coderxiaohan34 分钟前
【C++】C++11
开发语言·c++
雾岛听蓝36 分钟前
C++优选算法 | 双指针篇(一)
开发语言·c++
穿小甲的技术笔记1 小时前
C++ static_cast 解析:零成本的类型安全转换
c++
明洞日记1 小时前
【VTK手册036】网格拓扑简化工具:vtkCleanPolyData 使用指南
c++·图像处理·ai·vtk·图形渲染
wakaka_Yu1 小时前
COLMAP 3.13.0 + CUDA 12.9 + Ubuntu24.04 编译
c++
Dream it possible!1 小时前
LeetCode 面试经典 150_二分查找_搜索旋转排序数组(114_33_C++_中等)
c++·leetcode·面试
_OP_CHEN1 小时前
【从零开始的Qt开发指南】(二十)Qt 多线程深度实战指南:从基础 API 到线程安全,带你实现高效并发应用
开发语言·c++·qt·安全·线程·前端开发·线程安全
hetao17338371 小时前
2026-01-09~12 hetao1733837 的刷题笔记
c++·笔记·算法