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;
}
相关推荐
学习编程的gas13 分钟前
C++:STL中list的使用和模拟实现
开发语言·c++
shanks6617 分钟前
【图像处理】直方图均衡化c++实现
c++·图像处理·数码相机
lsnm25 分钟前
【LINUX网络】使用TCP简易通信
linux·服务器·c语言·网络·c++·tcpdump
今晚打老虎31 分钟前
c++之基础B(第一课)
开发语言·c++
hz_zhangrl1 小时前
CCF-GESP 等级考试 2025年6月认证C++七级真题解析
c++·程序设计·gesp·gesp2025年6月·c++七级·c++七级解析
乌萨奇也要立志学C++1 小时前
【C++详解】深入解析多态 虚函数、虚函数重写、纯虚函数和抽象类、多态原理、重载/重写/隐藏的对⽐
c++
NuyoahC2 小时前
笔试——Day23
c++·算法·模拟
一只余弦函数2 小时前
《C++》STL--vector容器超详细解析
c++
BS_Li2 小时前
C++多态
c++·多态
小白要加油努力2 小时前
C++-STL-String重点知识
开发语言·c++