He's 14 years old, eh? If I was him I'd wait with C++ for a while, it'd probably scare him out of programming. Start with a more easy high level language such as C# or Java.
Especially Visual Studio 2008 + C# is a very friendly environment for new programmers. It's used at my school to learn people how to program.
After that you could take a shot at Java. It's a bit more hard than C# but it's more powerful with, for example, multi-threading.
Multithreading with Mutexing et all is a field of study in itself, so it's good to learn all about it in a more "easy" language.
After that I would go to more advanced low level languages such as C++, but don't be fooled by those cool "I'll teach you C++ in one day!" tutorials on the web and just book a good book such as "Practical C++ Programming", learn about algorithms with the book LigH mentioned or the book I read; "Programming Pearls". Or just take a course on C++, don't underestimate the power of an experienced teacher who can heed you for many mistakes.
And of course, once you know the basics, start programming. You only truly learn to program after months of practical experience. Start a project of your own, and once you're sure enough of your abilities, join an Open Source project perhaps! Sure you'll make plenty of mistakes and be shouted at by fellow developers, but you'll learn and that's always good.
Oh, and don't expect it to be fun all the time, to get to the good stuff you need to plow through the field of boringness first
Btw, there's an "Express" edition of Visual Studio 2008 which is totally free. If you're interested in game developing also look at Microsoft's
XNA framework.
If he likes thing as XNA you could later also look at the multi-platform gaming development tool
Unity, which you can program to in C#, JavaScript and a Python dialect.