UML is not dessert topping and floor wax.
Multiple Inheritance is like a parachute. You don't often need it, but when you do, you really need it.
C++ also supports the notion of friends: cooperative classes that are permitted to see each other's private parts.
The amateur software engineer is always in search of magic.
The task of the software development team is to engineer the illusion of simplicity.
All of life is iterative. It goes back to the point I made earlier, which is you can't a priori know enough to even ask the right questions.