I'd say it depends. For very large project, where realtime and code/RAM size are not of utter importance, I'd say object orientation of C++ might have certain benefits.
For small scale applications, low level stuff or very high realtime requirements, I'd personally stay away from C++.
One more thing to consider:
Any high level language feature creates additional code that makes runtime/memory consumption less predictable, might cause data consistency issues and makes debugging harder.
I.e. even in C, things like structs should be handled carefully, as structs can be copied using the "=" operator and passed as as parameters or return values on the stack. So there's a heap of additional code created for something that looks like nothing at all. Now in C++ thinks like operator overloading might make the code look much cleaner but create lots of code on opcode/assembler level that doesn't match the C source. So debugging issues becomes much harder.