类型转换运算符
1.dynamic_cast
2.const_cast
3.static_cast
4.reinterpret_cast
1.dynamic_cast
语法如下:
dynamic_cast<type-name>(expression)
例:
High * p1;
Low * p2;
p1 = dynamic_cast<Low *>(p2);
该运算符的用途是使得能够在层次结构中向上进行转换。
2.const_cast
const_cast只有一种用途的类型转换,即改变值为const或volatile。
语法如下:
const_cast<type-name>(expression)
type_name和expression类型必须相同
例:
High bar;
const High *pbar = &bar;
High *pb = const_cast<High*>(pbar);
3.static_cast
语法如下:
const_cast<type-name>(expression)
仅当type_name可被隐式转换为expression所属的类型或expression可被隐式转换为type_name所属的类型时,上述转换才是合法的。
High bar;
Low blow;
High* pb = static_cast<High*>(&blow);
Low *p1 = static_cast<Low*>(&bar);
4.reinterpret_cast
语法如下:
reinterpret_cast<type-name>(expression)
例:
struct dat{short a; short b;};
long value = 0xA224B118;
dat * pd = reinterpret_cast<dat *>(&value);
cout<<hex<<pd->a;