C++ design new thinking