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;
}


Veja também

Ferramentas pessoais