Static cast
De ccppbrasil.org
Cast (conversão) utilizado para obter um ponteiro ou referência para um objeto do tipo especificado. É o cast mais parecido com o modelo utilizado pelo C, mas difere por ser mais restritivo e por fazer checagem pela herança. Possui a vantagem de ser mais claro em um código-fonte que a versão C. Uma herança não possível não constitue código C++ válido, logo, não é compilável. Não permite conversão entre tipos constantes para não-constantes (e vice-versa).
O static_cast é geralmente utilizado para fazer cast de um ponteiro de uma clase mais baixa na hierarquia (classe filha) para uma classe mais alta na hierarquia (classe mãe), pois o compilador consegue definir se a conversão é possível ou não. Por ser o cast mais simples, é o cast de execução mais rápida.
Exemplo
class A {};
class B {};
class C : public A {};
int main()
{
A a;
C c;
A *pa1 = &a;
B *pb1 = (B*) pa1; // permitido, mas desaconselhado
B *pb2 = static_cast<B*>(pa1); // não permitido
C *pc1 = &c;
A *pa2 = static_cast<A*>(pc1); // permitido
return 0;
}
