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.
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.
The function of good software is to make the complex appear to be simple.
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.