C++ is still useful in embedded systems. As everyone else has said, that it still depends on the system itself, like 8-bit uC would probably be a no-no in my book even though there is a compiler out there and some people do it(shudder). [ There's still an advantage to using C++ even when you scale it down to something like "C+" even in a 8-bit micro world. What I mean by "C+", I mean don't use new/delete, avoid exceptions, avoid virtual classes with inheritance, possibly avoid inheritance all together, be very careful with templates, use inline functions instead of macros, and use const variables instead of #defines. I've been working both in C and C++ in embedded systems for well over a decade now, and some of my youthful enthusiasm for C++ has definitely worn off due to some real world problems that shake one's naivete. I have seen the worst of C++ in an embedded systems which I would like to refer to as "CS programmers gone wild in an EE world." In fact, that is something I'm working on with my client to improve this one codebase they have among others. The danger of C++ is because it's a very very powerful tool much like a two-edged sword that can cut both your arm and leg off if not educated and disciplined properly in it's language and general programming itself. C is more like a single-edged sword, but still just as sharp. With C++ it's too easy to get very high-levels of abstraction and create obfuscated interfaces that become meaningless in the long-term, and that's partly due to C++ flexibility in solving the same problem with many different language features(templates, OOP, procedural, RTTI, OOP+templates, overloading, inlining). I finished a two 4-hour seminars on Embedded Software in C++ by the C++ guru, Scott Meyers. He pointed out some things about templates that I never considered before and how much more they can help creating safety-critical code. The jist of it is, you can't have dead code in software that has to meet stringent safety-critical code requirements. Templates can help you accomplish this, since the compiler only creates the code it needs when instantiating templates.
Yes, C/C++ both are used very commonly for embedded systems. Main reason behind this is C/C++ is much more user friendly then Assembly language. As Embedded programming is originally done in Assembly Language, which requires a lot of time and also Assembly language is very difficult to program, and hence C/C++ is more preferable in embedded systems. Embedded programming is usually done for self-working machines, and there focus is on the task which is programmed into them, these a days Embedded system are too much commons, from normal households to Air jet.Most of them have self-runningprograms.These many controllers embedded systems. So C/C++ can handle it very efficiently.C/C++ has ability to handle small hardware very easily. As embedded systems are in rich with micro controller, micro controller understands system language (assembly). And C/C++ programs are also converted into system language (assembly) at the end. And also C/C++ programs are also very easy to write as compare to Assembly Language and can perform all of the basic tasks with its rich libraries that any assembly language program can do. So doing micro controller or embedded programming in C/C++ is definitely an optimal choice for us. So concluding my topic, embedded systems can definitely programmed in C/C++, and they will behave same as they will for Assembly language. And even better because C/C++ programs are easy to write and has less chances of error as compared to Assembly Language.