Please read the following before posting some variant of this question. These business considerations generally play a much greater role than compile time performance, runtime performance, static vs. dynamic typing, static vs. dynamic binding, etc. Lots and lots of companies and government sites. But even if they have the best training, they're not ready yet. To become one of these experts who can mentor others takes around 3 years.
Some people never make it.
You don't have a chance unless you are teachable and have personal drive. Operator overloading and non- virtual member functions are great, but they are, after all, just syntactic sugar for the more typical C notion of passing a pointer to a struct to a function. Before OO came along, reuse was accomplished by having new code call old code. With OO, reuse can also be accomplished by having old code call new code. For example, a programmer might write some code that is called by a framework that was written by their great, great grandfather.