I wouldn't dismiss the benefits of an object-oriented language like C++, or especially C#. As an engineer, it is an incredibly logical and somewhat obvious approach to designing software. A bit like functional programming (eg, FORTRAN functions) on steroids.
You treat stuff as objects, with user inputs/interfaces/controls, internal processes, and outputs. Especially if you're modelling/simulating real world stuff it's extremely logical and efficient, IMO.
For example, if you're going to simulate a car, it has user interfaces (steering wheel, brakes, gas pedal), internal functions, and outputs. And if you build a model of the car engine and its controls, it's a fully functional block of code you can reuse the next time you simulate a car. Just tweak the object's parameters and you have a different engine.
Yeah, some seem to prefer functional, rather than object oriented, and they may have a point in some applications. But if you're simulating real world stuff it's wonderful, IMO.
Of course if you're not simulating real world stuff, and doing more abstract stuff, then maybe it's overkill. I've used it to simulate/model control systems, it's great. You end up with a block of code that defines the hardware, maybe even comprised of sub-objects you connect together, and tweak the parameters and you're ready to go. Wonderful.
Personally, I couldn't care less what others use, and what's more popular. Different tools for different jobs. And it seems the higher level languages (C++, C#, etc.) are better for more abstract uses, and the lower levels (C, ASM, etc.) for more direct hardware-based stuff.