关于类型转换
目前只重点介绍显式转换。
方法如下:
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;
不再推荐。