static_cast
static_cast的函数原型如下:
- 1
- 1
说明:
该运算符把expression转换为type-id类型。
具体用法如下:
- 用于类层次结构中基类和子类之间指针或引用的转换。向上转型(把子类的指针或引用转换成基类表示)是安全的;向下转型(把基类指针或引用转换成子类指针或引用)时,由于没有动态类型检查,所以是不安全的。
- 用于基本数据类型之间的转换。
- 把void指针转换成目标类型的指针。
示例:
// 1. 类转换class Base {};
class Child : public Base {};
Child *a = new Child();
Base *b = static_cast<Base *>(a);
// 2.基本类型转换
int i = 5;
double r = static_cast<double>(i);
// 3. void* 类型转换v
oid *p = &i;int *s = static_cast<int *>(p);
dynamic_cast
dynamic_cast的函数原型如下:
- 1
- 1
说明:
该运算符把expression转换成type-id类型的对象。type-id必须是类的指针、类的引用或者void *;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。