C ++ è più di un linguaggio di programmazione:
a) È un "migliore" C b) È un linguaggio orientato agli oggetti c) È un linguaggio che ci consente di scrivere programmi generici
Sebbene tutte queste funzioni possano essere utilizzate separatamente, i migliori risultati si ottengono quando si utilizzano contemporaneamente tre di essi. Tuttavia, se si sceglie di sceglierne solo uno, la qualità del software incorporato aumenterà.
a) È un "migliore" C
C ++ è un linguaggio tipizzato forte; più forte di C. I tuoi programmi beneficeranno di questa funzione.
Alcune persone hanno paura dei puntatori. C ++ include i riferimenti. Funzioni sovraccaricate.
E vale la pena dirlo: nessuna di queste funzionalità è stata sostenuta da programmi più grandi o più lenti.
b) È un linguaggio orientato agli oggetti
Qualcuno ha detto in questo post che astrarre la macchina nei microcontrollori non è una buona idea. Sbagliato! Tutti noi, gli ingegneri embedded, abbiamo sempre estratto la macchina, solo con altre sintassi quella di C ++. Il problema che vedo con questo argomento è che alcuni programmatori non sono abituati a pensare negli oggetti, in questo modo non vedono i benefici di OOP.
Ogni volta che sei pronto per utilizzare la periferica di un microcontrollore, è probabile che la periferica sia stata astratta per noi (da te o da una terza parte) sotto forma di driver del dispositivo. Come ho detto prima, quel driver usa la sintassi C, come mostra il prossimo esempio (preso direttamente da un esempio NXP LPC1114):
/ * Impostazione del timer per la corrispondenza e l'interruzione a 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);
Vedi l'astrazione? Quindi, quando si utilizza C ++ per lo stesso scopo, l'astrazione viene portata al livello successivo attraverso il meccanismo di astrazione e incapsulamento del C ++, a costo zero!
c) È una lingua che ci consente di scrivere programmi generici
I programmi generici sono realizzati tramite modelli e anche i modelli non hanno costi per i nostri programmi.
Inoltre, il polimorfismo statico si ottiene con i modelli.
Metodi virtuali, RTTI ed eccezioni.
Vi è un compromesso quando si utilizzano metodi virtuali: software migliore contro un certo rigore nelle prestazioni. Tuttavia, ricorda che è probabile che il bind dinamico venga implementato usando una tabella virtuale (un array di puntatori a funzione). Ho fatto lo stesso in C molte volte (anche su base regolare), quindi non vedo gli svantaggi nell'uso dei metodi virtuali. Inoltre, i metodi virtuali in C ++ sono più eleganti.
Infine, un consiglio su RTTI ed eccezioni: NON UTILIZZARLI nei sistemi embedded. Evitali a tutti i costi !!