Eu li em conversão de tipo explícito (minha ênfase):
Quando a expressão de conversão no estilo C é encontrada, o compilador tenta interpretá-la como as seguintes expressões de conversão, nesta ordem:
const_cast<target-type>(expression)
;static_cast<target-type>(expression)
, com extensões : ponteiro ou referência a uma classe derivada também pode ser convertido em ponteiro ou referência a uma classe base inequívoca (e vice-versa), mesmo se a classe base estiver inacessível (ou seja, essa conversão ignora o especificador de herança privada). O mesmo se aplica à conversão de ponteiro para membro, para ponteiro para membro de base não virtual inequívoca;static_cast
( com extensões ) seguido porconst_cast
;reinterpret_cast<target-type>(expression)
;reinterpret_cast
seguido porconst_cast
.
O que significa “com extensões” nos itens 2 e 3? Se possível, gostaria de um exemplo de elenco com extensões e sem extensões (se houver).
Significa apenas estender a funcionalidade
static_cast
como diz:Por exemplo:
Você não pode fazer isso:
Mas você pode: