I really wish people could just abstain from using the built-in class abstractions in their C++, instead of switching wholesale to C and losing all of C++'s other niceties (templates, exceptions, less cruft on portability of primitives, etc.) C++-without-classes is a really nice medium-level language, one that's a lot better at being C than C is, and it'd be nice if more things could be written in it. It would be perfect for the Linux kernel and GNOME, for example.
However, as you've said, C++ encourages you to use its badly-thought-out class abstractions, and that's what most people who "code C++" tend to know how to do. Linus, I believe, disallowed C++ specifically because people would gradually write the kernel into a maintainability corner, by modeling things as hierarchies of classes without understanding the implications.