Obj-C tiene capacidades mucho más dinámicas en el lenguaje mismo, mientras que C ++ está más enfocado en capacidades de tiempo de compilación con algunas capacidades dinámicas.
En, el polimorfismo paramétrico C ++ se verifica en tiempo de compilación, mientras que en Obj-C, el polimorfismo paramétrico se logra a través del despacho dinámico y no se verifica en tiempo de compilación.
Obj-C es de naturaleza muy dinámica. Puede agregar métodos a una clase durante el tiempo de ejecución. Además, tiene introspección en tiempo de ejecución para mirar las clases. En C ++, la definición de clase no puede cambiar, y toda introspección debe hacerse en tiempo de compilación. Aunque, la naturaleza dinámica de Obj-C podría lograrse en C ++ usando un mapa de funciones (o algo así), todavía es más detallado que en Obj-C.
En C ++, hay muchas más comprobaciones que se pueden hacer en tiempo de compilación. Por ejemplo, usando un tipo de variante (como una unión) el compilador puede exigir que todos los casos se escriban o manejen. Por lo tanto, no se olvide de manejar los casos extremos de un problema. Sin embargo, todos estos controles tienen un precio al compilar. Obj-C es mucho más rápido en la compilación que C ++.