The topic title specifically said C++. Why does everyone jump to suggesting the Unity product? This product can't even use C++ for its scripting.
I would suggest keeping with C++ which will certainly better serve you in the long run as a proper programmer.
I also suggest using the SDL library to start with 2D games until you are ready for 3D, in which case Unreal Engine 4 is a more powerful engine than Unity and 100% free and has the source available.
Also Unity (even the free version) has a one time subscription / DRM sign in system (personally... sod that!).