I read Ivor Horton's Beginning Visual C++ 2010 (BVCP2) to gain some familiarity with the C++ programming language. Prior to this book I read Mr Horton's Beginning C book. Between the two books, I hoped to learn enough about C and C++ to prepare me to read a third book titled Windows via C/C++, 5th Ed by Richter and Nasarre. As a security professional, being able to grasp the essence of C and C++ as they are used in Windows helps me understand security advisories and related discussion of vulnerabilities in exploits. BVCP2 is a great book for a person like me, but it also appears to be the right book for someone who wants to become a legitimate C++ for Windows programmer. I highly recommend it to both sorts of readers.
The author is an expert writer and teacher. It is easy to follow his explanations and he manages to include some humor in what could otherwise be a very dry topic. As a text, like Beginning C, BVCP2 offers numerous complete code examples, clear figures, helpful tables and charts, and exercises for motivated readers. The publisher provides source code for the book's examples plus source code for solutions to the exercises. I liked the concept -> code -> explanation approach, along with the "Try It Out" and "How It Works" examples. Each chapter reinforces key concepts with "What You Learned in This Chapter." It's like an entire class in book form.
One strength of BVCP2 is the author's discussion of native C++ and C++/CLI, i.e., applications for the CLR. The author starts each chapter with native C++ discussions, and concludes each chapter with expansions for C++/CLI. By Ch 12 the author differentiates between using the Windows API, Microsoft Foundation Classes, and using Windows Forms. By comparing these three ways to create interactive Windows applications (as opposed to the console apps of previous chapters), the author really helped me understand their strengths and weaknesses.
A few previous reviewers complained that you need a full version of Visual Studio to follow along. I downloaded a 30 day trial of Microsoft Visual Studio 2010 Professional Trial - Web Installer to try some of the code. For example, I really enjoyed how the author had readers compiling and running code right away in Ch 1. Also, a previous reviewer wrote the author will mention a topic briefly, then promise to cover it later. I never had a problem with this tactic, given the scope of the material to be covered.
Overall, I strongly recommend BVCP2 if you want to learn about C++, especially for Windows. The book provided a solid foundation for reading books on Windows programming and internals that I later read.