There is the myth that using C++ per se makes applications and libraries slow and bloated. Avoiding bloat is of special importance for embedded devices, which usually have limited amounts of CPU power and memory.
On www.linuxdevices.com I found a short article on this topic: C vs. C++ on Embedded Devices.
Let's get down to the statements being made there:
Some things the C++ developer must be aware of:
- run time type information and dynamic_cast<> add memory and performance overhead, so consider avoiding it
- creating a variable means that its ctor, i.e. a function will be called
- AFAIK exceptions still add some overhead using gcc, so it should be considered to avoid them
- a class without virtual functions is the same as a struct and some functions, memory wise, no additional overhead here, except the implicit this pointer for each member method.
- be aware how template code generation works. You can reduce this to a minimum if you want to.
And there are also advantages of using C++ for embedded projects:
- global/static objects will be initialized automatically, when the application starts since then their ctors will be called automatically
- init-functions can't be forgotten, since ctors are called automatically
- you have stricter type checking
- you can write more expressive and concise code, since the language gives you more power
- use const extensively to make semantics clearer
So, that's about it.
IOW I don't see any inherent disadvantages of C++ compared to C. It boils down to "Know your tools". The best tools are the ones you know best. If you know C++, you know where code is called and where memory is required and can avoid it if neccessary. Additionally you get all the advantages of C++