C++ Gotchas: Avoiding Common Problems in Coding and Design