Author: Bjarne Stroustrup
Audience: Intermediate C++ Programmers
Reviewer: Mike James
If you are looking for a leisurely tour of C++, something to ease you into its way of thinking, this is not the book for you. This is a fast-paced tour and in 200 pages you get a lot of information.
This is a compact book based on the first few chapters of The C++ Programming Language, Fourth Edition and if you already have the Stroustrup's classic tome book you probably don't need this one, but it is a useful summary and at less than 200 pages a good book to have handy when you want a refresher. The material has been processed to make it self-contained and to enlarge on points that would be covered in a later and longer treatment.
Just in case you don't know, the author Bjarne Stroustrup is the original inventor of C++ as an object-oriented language built on top of C. He is now the chief architect of the newer C standards and C++11 in particular. So if you want to read a book written by someone who might just have a rough idea what C++ is all about you couldn't do better than have Stroustrup as its author.
This is a very rapid paced tour of C++ and it goes well beyond the core language and into the standard library and its use. The language is C++ 11 but Stroustrup doesn't spend a lot of time on detailing where each feature came into play. His task is to describe C++ as he currently writes it.
Chapter 1 starts with the basics and moves from a hello world through functions, types and so on. Don't assume that this is an introduction to programming - it isn't. It is an introduction to C++ for programmers and preferably programmers who already have a slight knowledge of C++. You certainly need to know the basics of object oriented programming and even then you might find some of the topics are introduced too fast for you.
Chapter 2 deals with the basic data structures - structures, classes, unions and enumerations. Chapter 3 is about modularity - namespaces, separate compilation and error handling. Chapter 4 deals with object oriented matters going from concrete types to abstract types and class hierarchies in just a few pages. Chapter 5 deals with templates and generics in general and brings the treatment of the core of the language to a close.
The rest of the book deals with the standard library and wider issues of programming in C++.
Chapter 6 provides an overview of the library. Chapter 7 is about strings and regular expressions. Chapter 8 is on I/O streams. Chapter 9 deals with containers - vector, list, map, unordered map. Chapter 10 is called "Algorithms" but is about iterators, predicates and general topics. Chapter 11 is a collection of different topics under the heading "Utilities" - Time, function adaptors and so on. Chapter 12 is dedicated to numerics including some very general topics - complex numbers, random numbers and vector arithmetic. The book closes with a look at concurrency, threading and so on and finally a chapter on the history of the language and its versions.
As already stated, this is a very rapid tour. It is more a primer of the language for someone who knows it but has temporarily forgotten some of it. If you know K&R's "The C Programming Language" then a good way to describe it as similar in style but for a much bigger and more sophisticated language than C. For this reason it occasionally fails to provide enough background to help you understand some subtle point.
This is a highly recommended book, but if you find it tough going don't be surprised.
Programming: Principles and Practice Using C++