When your time budget is a million cycles to handle a few dozen samples, you absolutely can use careful GC and careful allocation. A complicated OOP hierarchy doesn't require any thought at all. It just works, without any care needed.
Some realtime is truly restrictive. Realtime audio on a GHz-class processor is not.
OOP isn't a problem, IF you're talking about C++ code using purely stack allocated objects, that you wrote yourself to not use any memory allocation, taking care with locks, etc...
If you're not experiencing performance issues every day despite your smartphone being "ghz class", I want your phone!
Some realtime is truly restrictive. Realtime audio on a GHz-class processor is not.