Sun Studio 12 Update 1:C++ 用户指南

9.3 static_cast

表达式 static_cast<T>(v) 用于将表达式 v 的值转换为 T 类型。该表达式可用于任何隐式允许的转换类型。此外,任何值的类型都可以强制转换为 void,并且,如果强制类型转换与旧式强制类型转换一样合法,则任何隐式转换都可以反向执行。


class B            {...};
class C: public B {...};
enum E {first=1, second=2, third=3};
void use_of_static_cast(C* c1)
{
  B* bp = c1;                  // implicit conversion
  C* c2 = static_cast<C*>(bp); // reverse implicit conversion
  int i = second;              // implicit conversion
  E e = static_cast<E>(i);    // reverse implicit conversion
}

static_cast 运算符不能用于删除 const。可以使用 static_cast 对分层结构“向下”强制类型转换(从基到派生的指针或引用),但是不会检查转换,因此结果可能无法使用。static_cast 不能用于从虚拟基类向下强制类型转换。