Ive been learning c++ for a while now and when im older i might want to go in to game development or making them from scratch is c++ a good way to go about this? If so where can i learn c++ game programming?
Game programming is a broad, broad spectrum and, generally speaking, it's quite a different programming process.
With game programming, you're objective is to get the best out of the hardware and keep things as fast a fluent as possible. It can get a little hacky at times.
As I said, the scope is broad and branches out into a lot of areas; graphics, physics, sound, AI etc.
There's a few things you can do, though. Go with whatever you feel is right:
First of all, almost all games programming roles require you to have strong math skills. Buff up your knowledge of algebra, simultaneous and differential equations, coordinate geometry, trigonometry and vectors and the very least. Also get comfortable with working in radians. If you can pick up skills in matrix operations, second order differential equations (including base skills in differentiation and integration) and Newtonian mechanics that would also help.
I'd start by making a couple of console games. Console being the Windows console, not an Xbox 360 :-). Get used the flow control and classes and make sure you understand the OO principles well.
Then look to go 2D. Use something like SDL to make a simple 2D game. Nothing crazy, just a Space Invaders clone or something like that. You'll get to work on your 2D maths skills a little here. Again, stick to the principles of OO. It's a big deal in game development (in fact, almost any development) and employers will be looking out for it.
When your comfortable, work on a 3D application. Use something like OpenGL or DirectX (I recommend the former, coupled with the GLUT libraries). The jump from 2D to 3D can be a little daunting. You'll have to grasp the concepts of world, model-view and transformation matrices to name a few. But, if you persevere and want it bad enough you'll get to grips with it.
There's no right way to do this, but there's definitely some principles you'll need in any route; keep the math strong, keep the OOP up, keep determined.
I'd start by making a couple of console games. Console being the Windows console, not an Xbox 360 :-). Get used the flow control and classes and make sure you understand the OO principles well.
Most console games don't have the same control flow as 'graphical' games though (I suppose there are some games that have a similar control flow to console games, but that's hardly the majority).