What is the best practice for managing visibility in C++?