C++中static_cast, dynamic_cast用法

来源:互联网 发布:属下知罪by枯目下 编辑:程序博客网 时间:2024/06/04 18:20

static_cast

static_cast的函数原型如下

static_cast<type-id>(expression)
  • 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的函数原型如下

dynamic_cast<type-id>(expression)
  • 1
  • 1

说明: 
该运算符把expression转换成type-id类型的对象。type-id必须是类的指针、类的引用或者void *;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。



原创粉丝点击