C++中的四种强转类型

在C++中一共有四种强转类型分别为:static_cast,const_cast,reinterpret_cast和dynamic_cast

类型转换的一般形式为:cast-name(expression)



顶层const:表示指针本身是个常量    eg:int *const p;

底层const::表示指针所指的对象是一个常量   eg:int const *p


1.static_cast


只要不包括底层const,任何具有明确定义的类型转换都可以用。


2.const_cast


只能改变底层的const。


3.reinterpret_cast


a.在指针之间转换,将一种类型的指针转换为另一种类型的指针

b.将指针转换为一个整形数,但不能用于非指针类型的转换


4.dynamic_cast


将基类的指针或引用转换为派生类的指针或引用(我们称从已定义类产生新类的过程称为派生。已存在的用来派生新类的类为基类,又称父类。由已存在的类派生出的新类称为派生类,又称为子类。例如:从哺乳动物派生出狗,哺乳动物是父类,狗是子类。


对指针进行dynamic_cast :失败返回null,成功返回正常cast后的对象指针

对引用进行dynamic_cast : 失败抛出一个异常的bad_cast,成功返回正常cast后的对象指针


对于向上转换(从派生类转换到基类),无论是指针还是引用都是安全的

对于向下转换类型:

a.基类指针所指对象是派生类类型,这种转换是安全的

b.基类指针所指对象为基类类型,在这种情况下,dynamic_cast在运行时做检查,转换失败,返回结果为0





你可能感兴趣的:(c++,类型转换)