C ++ es más que un lenguaje de programación:
a) Es un "mejor" C b) Es un lenguaje orientado a objetos c) Es un lenguaje que nos permite escribir programas genéricos
Aunque todas estas características se pueden usar por separado, los mejores resultados se logran cuando las tres se usan al mismo tiempo. No obstante, si elige elegir solo uno de ellos, la calidad del software incorporado aumentará.
a) Es una "mejor" C
C ++ es un lenguaje tipado fuerte; más fuerte que C. Sus programas se beneficiarán de esta función.
Algunas personas tienen miedo de los punteros. C ++ incluye las referencias. Funciones sobrecargadas.
Y vale la pena decir: ninguna de estas características incurrió en programas más grandes o más lentos.
b) Es un lenguaje orientado a objetos.
Alguien dijo en esta publicación que abstraer la máquina en microcontroladores no es una buena idea. ¡Incorrecto! Todos nosotros, los ingenieros integrados, siempre hemos abstraído la máquina, solo con otro sintaxis que el de C ++. El problema que veo con este argumento es que algunos programadores no están acostumbrados a pensar en objetos, así no ven los beneficios de la POO.
Siempre que esté listo para usar el periférico de un microcontrolador, es probable que el periférico haya sido extraído para nosotros (de usted o de un tercero) en forma del controlador del dispositivo. Como dije antes, ese controlador usa la sintaxis C, como muestra el siguiente ejemplo (tomado directamente de un ejemplo NXP LPC1114):
/ * Configuración del temporizador para partido e interrupción en TICKRATE_HZ * /
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (timerFreq / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
¿Ves la abstracción? Entonces, cuando se usa C ++ para el mismo propósito, la abstracción se lleva al siguiente nivel a través del mecanismo de abstracción y encapsulación de C ++, ¡a costo cero!
c) Es un lenguaje que nos permite escribir programas genéricos.
Los programas genéricos se logran mediante plantillas, y las plantillas tampoco tienen costos para nuestros programas.
Además, el polimorfismo estático se logra con plantillas.
Métodos virtuales, RTTI y excepciones.
Existe un compromiso cuando se utilizan métodos virtuales: mejor software frente a alguna penalización en el rendimiento. Sin embargo, recuerde que es probable que el enlace dinámico se implemente usando una tabla virtual (una matriz de punteros de función). He hecho lo mismo en C muchas veces (incluso de forma regular), por lo que no veo los inconvenientes en el uso de métodos virtuales. Además, los métodos virtuales en C ++ son más elegantes.
Finalmente, un consejo sobre RTTI y excepciones: NO LOS USE en sistemas embebidos. ¡Evítalos a toda costa!