关于类型转换

目前只重点介绍显式转换。

方法如下:

cast-name<type> (expression)

其中cast-name可以是:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

其中dynamic_cast支持运行时类型识别,属于高级内容,这里不介绍。

static_cast

除了包含低层const的类型,其它的类型转换都可以使用这个。

double slope = static_cast<double>(i) / j;

它一个用途是对void*指针进行转型,

void *p = &d;
double *dp = static_cast<double*>(p);

const_cast

只能改变低层const的;这里的改变是:只能改变表达式constess属性。

const char *pc;
char *p = const_cast<char*>(pc);

后面会提到,这在函数重载中很有用。

老的方式

以前的转型方式:

type (expr);
(type) expr;

不再推荐。