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;
}
相关推荐
平安的平安几秒前
面向大模型算子开发的高效编程范式PyPTO深度解析
c++·mfc
June`2 分钟前
muduo项目排查错误+测试
linux·c++·github·muduo网络库
C++ 老炮儿的技术栈6 分钟前
VS2015 + Qt 实现图形化Hello World(详细步骤)
c语言·开发语言·c++·windows·qt
Once_day14 分钟前
C++之《Effective C++》读书总结(4)
c语言·c++·effective c++
柯一梦17 分钟前
STL2---深入探索vector的实现
c++
MSTcheng.25 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
愚者游世28 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
小镇敲码人29 分钟前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
liu****1 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
A9better1 小时前
C++——不一样的I/O工具与名称空间
开发语言·c++·学习