The amateur software engineer is always in search of magic.
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.
Hierarchy is a kind of order of abstractions.
A fool with a tool is still a fool.
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.