As I started working in an embedded environment, I was astonished that there was so much prejudice against the usage of C++ in embedded programming. Most of them are based on the wrong understanding of the C++ programming language.
Some Common Myths
- Templates cause code bloat
- Objects have to be created on the heap
- Exceptions are expensive
- C++ is slow and needs too much memory
- C++ is too dangerous in safety-critical systems
- You must write object-oriented code in C++
- C++ can only be used for applications
iostreamlibrary is too big; the STL library too slow
C++ is a cute toy but it cannot handle the challenging tasks.
The list of prejudice is long consisting partially of half-truth and untruth statements often stated by experienced C programmers. I will only refer to the untruth statements. The half-truth statements are, to a large extent, questions due to the right usage of C++ and, to a small extent, questions of the implementation of the core and the libraries of C++.
Objects must live on the heap.
- Objects can be created on the stack or at an arbitrary position with the help of placement new.
C++ is too dangerous in safety-critical systems
- Of course, it depends on the experience of the developer. But whoever uses C strings instead of C++ strings; uses C arrays instead of C++ arrays; uses macros instead of constant expressions or templates, can not argue that C++ is not well suited for safety-critical systems. Honestly, the contrary holds. C++ has a lot to offer in safety-critical systems.
You must program object-oriented in C++
- C++ is a multi-paradigm language, meaning you can solve your problem in an object-oriented, structured, functional, generic, or generative style.
C++ can only be used for applications
- C++ can be used for many different kinds of products for example, fire extinguishers, defibrillators, and cars.