C transmisión_dinámica y transmisión_estática
Básicamente, Dynamic_cast se convierte en función de la tabla de funciones virtuales. Si no hay una función virtual en su sistema derivado, Dynamic_cast no funcionará y las versiones superiores de VC generarán un error de compilación. static_cast es una conversión independiente del tipo, equivalente a (tipo*)pVal. Pero en comparación con este último, static_cast realiza una verificación más. Si es realmente independiente del tipo o no existe una relación de conversión potencial, no se podrá compilar.
La transformación más poderosa es reinterpret_cast, y el programador es completamente responsable de la transformación ~~.
Bien, hablemos de tu código. Creas un nuevo A y usas B para operar A. La tabla virtual aquí pertenece a B, pero el método de llamar a A no es razonable. El polimorfismo consiste en utilizar la clase base para operar en subclases y no al revés.