

In A Tour of C++, Second Edition, Bjarne Stroustrup, the creator of C++, describes what constitutes modern C++. This concise, self-contained guide covers most major language features and the major standard-library components―not, of course, in great depth, but to a level that gives programmers a meaningful overview of the language, some key examples, and practical help in getting started. Stroustrup presents the C++ features in the context of the programming styles they support, such as object-oriented and generic programming. His tour is remarkably comprehensive. Coverage begins with the basics, then ranges widely through more advanced topics, including many that are new in C++17, such as move semantics, uniform initialization, lambda expressions, improved containers, random numbers, and concurrency. The tour even covers some extensions being made for C++20, such as concepts and modules, and ends with a discussion of the design and evolution of C++. This guide does not aim to teach you how to program (for that, see Stroustrup’s Programming: Principles and Practice Using C++, Second Edition ), nor will it be the only resource you’ll need for C++ mastery (for that, see Stroustrup’s The C++ Programming Language, Fourth Edition, and recommended online sources). If, however, you are a C or C++ programmer wanting greater familiarity with the current C++ language, or a programmer versed in another language wishing to gain an accurate picture of the nature and benefits of modern C++, you can’t find a shorter or simpler introduction than this tour provides. Review: Worthwhile upgrade to the First Edition - The first edition of this book covered C++ up to C++11. Now that I've moved to C++14, I decided it was time to buy the second edition, which covers up to C++17 and notes some of the upcoming features of C++20. If you like the first edition of this book, you'll like the second edition even more. Going from 181 to 240 pages, all of the first edition content seems to be there, along with the same terse but informative information on the new C++ features. There is also expanded information on C++ usage in general. For example, the old 'Classes' chapter is now broken out into two, with an additional chapter 'Essential Operations' added that covers both the newer copy and move references, as well as new material on resource management and conventional operations (eg container operations, etc.) reflecting the latest thinking on best practices with C++. The 'Templates' chapter has been broken out to include a new chapter 'Concepts and Generic Programming' covering generic programming and variadic templates. The Input and Output chapter has been expanded to include not just the new File System functionality, but also C-style I/O (and how to mix it in without too much grief). The 'Algorithms' chapter now covers parallel algorithms from C++14 as well as Concepts from C++20. The 'Utilities' chapter adds new depth on customizing allocators, as well as describing new features such as range checking (span) and alternatives (variant/optional/any). As before, the final 'History and Compatibility' chapter lists the majority of changes between the major C++ versions, now up to C++17. Also as in the first edition, each chapter ends with a long list of Advice for best C++ programming practice, now updated to reflect the changes brought about by the new C++14 and C++17 methodologies. As with the first edition, this book is not an introduction to C++ for beginners, nor a detailed reference. As an experienced C++ programmer, I use it mostly as a 'Pocket Reference' to remind me of the often-quirky syntax required for a particular operation, or as a quick refresher of a particular C++ topic before I dig deep into "The C++ Programming Language" tome by the same author, cppreference.com, or Stack Overflow. It's also fun to just flip through occasionally to remind myself of functionality this porcine language hauls around that I only use when the planets align...bitsets, I remember those, oh yeah, ofstreams, std::iota()? totally forgot about that one... Review: The best book for experienced programmers to quickly learn modern C++ - This book is a great introduction to the latest features of the C++ language and standard libraries for experienced programmers. Although I would not recommend this book for anyone who wants to learn C++ as their first programming language (I would suggest this instead: Programming: Principles and Practice Using C++ (2nd Edition) ), I believe this book is perfectly suited for programmers with several years experience programming in another language such as C, C#, Java, Python or Ruby. Also, this would be my first recommendation for people with previous C++ experience but who haven't programmed in it recently (or for anyone who uses C++ regularly but in an environment stuck on C++98). As Dr. Stroustrup explains in the preface, this book covers all the highlights from the latest versions of the language & standard libraries (C++11, C++14, and C++17). New language features are quickly introduced but in a very clear and logical order, and each new feature is clearly and concisely explained. The book also includes a wealth of good, practical advice on the issues of design, performance, and style, as well as plenty of sample code to help you better understand how or why all of these features can and should be used. I'm amazed at how much information is included in such a short book, without sacrificing readability and understanding. I only have one minor complaint about this book: he also includes several new features that are expected to be included in C++20. The C++ standards committee is clearly working on several cool new features, and thanks to his explanations in this book I have a clear understanding of why these new features are important and how they can improve my own code, but it's disappointing to have to wait a few more years to use them. (Sections discussing potential new features in C++20 are clearly marked as such, so we get to know exactly what we're missing out on)







| Best Sellers Rank | #156,430 in Books ( See Top 100 in Books ) #32 in C++ Programming Language #63 in Computer Programming Languages |
| Customer Reviews | 4.7 out of 5 stars 541 Reviews |
R**N
Worthwhile upgrade to the First Edition
The first edition of this book covered C++ up to C++11. Now that I've moved to C++14, I decided it was time to buy the second edition, which covers up to C++17 and notes some of the upcoming features of C++20. If you like the first edition of this book, you'll like the second edition even more. Going from 181 to 240 pages, all of the first edition content seems to be there, along with the same terse but informative information on the new C++ features. There is also expanded information on C++ usage in general. For example, the old 'Classes' chapter is now broken out into two, with an additional chapter 'Essential Operations' added that covers both the newer copy and move references, as well as new material on resource management and conventional operations (eg container operations, etc.) reflecting the latest thinking on best practices with C++. The 'Templates' chapter has been broken out to include a new chapter 'Concepts and Generic Programming' covering generic programming and variadic templates. The Input and Output chapter has been expanded to include not just the new File System functionality, but also C-style I/O (and how to mix it in without too much grief). The 'Algorithms' chapter now covers parallel algorithms from C++14 as well as Concepts from C++20. The 'Utilities' chapter adds new depth on customizing allocators, as well as describing new features such as range checking (span) and alternatives (variant/optional/any). As before, the final 'History and Compatibility' chapter lists the majority of changes between the major C++ versions, now up to C++17. Also as in the first edition, each chapter ends with a long list of Advice for best C++ programming practice, now updated to reflect the changes brought about by the new C++14 and C++17 methodologies. As with the first edition, this book is not an introduction to C++ for beginners, nor a detailed reference. As an experienced C++ programmer, I use it mostly as a 'Pocket Reference' to remind me of the often-quirky syntax required for a particular operation, or as a quick refresher of a particular C++ topic before I dig deep into "The C++ Programming Language" tome by the same author, cppreference.com, or Stack Overflow. It's also fun to just flip through occasionally to remind myself of functionality this porcine language hauls around that I only use when the planets align...bitsets, I remember those, oh yeah, ofstreams, std::iota()? totally forgot about that one...
K**R
The best book for experienced programmers to quickly learn modern C++
This book is a great introduction to the latest features of the C++ language and standard libraries for experienced programmers. Although I would not recommend this book for anyone who wants to learn C++ as their first programming language (I would suggest this instead: Programming: Principles and Practice Using C++ (2nd Edition) ), I believe this book is perfectly suited for programmers with several years experience programming in another language such as C, C#, Java, Python or Ruby. Also, this would be my first recommendation for people with previous C++ experience but who haven't programmed in it recently (or for anyone who uses C++ regularly but in an environment stuck on C++98). As Dr. Stroustrup explains in the preface, this book covers all the highlights from the latest versions of the language & standard libraries (C++11, C++14, and C++17). New language features are quickly introduced but in a very clear and logical order, and each new feature is clearly and concisely explained. The book also includes a wealth of good, practical advice on the issues of design, performance, and style, as well as plenty of sample code to help you better understand how or why all of these features can and should be used. I'm amazed at how much information is included in such a short book, without sacrificing readability and understanding. I only have one minor complaint about this book: he also includes several new features that are expected to be included in C++20. The C++ standards committee is clearly working on several cool new features, and thanks to his explanations in this book I have a clear understanding of why these new features are important and how they can improve my own code, but it's disappointing to have to wait a few more years to use them. (Sections discussing potential new features in C++20 are clearly marked as such, so we get to know exactly what we're missing out on)
R**S
The "K&R" of Modern C++
This book is short but philosophically dense, written in a conversational style which meanders seamlessly from topic to topic, all-the-while punctuated by references to other related areas of the book. I found myself following these subsections in a choose-your-own-adventure style after the first read-through. Error handling is on page 35, RAII-style destructors are on page 51, and "Hello World" is on page 125 (essentially). And it works, because the author understands the material well enough to make everything flow intuitively. The text is black, and the syntax is bold blue, and they both use the same nice-looking font. The formatting is top-notch. The chapters conclude with a section of "Advice", which also summarizes the chapter in bullet-point format. These did not 100% match with my personal "Aha!" moments in the text: I used a red pen to underline key words and phrases to be easily found, but not distracting (as highlighting would be) on subsequent readings. I think the red/black/blue keeps it all nice-looking... It was easy to get bogged down in some areas which were hard or not interesting but it's there for a reason, and powering through helped prepare me for what was further in. There's only one other programming book I've enjoyed like this, hence the headline. I think this style of writing suits the same purpose as That One.
M**N
A must read for modern C++ programmers
A solid overview of the modern C++ (17) by the venerable creator of C++ himself. An easy and engaging read, best read along with a compiler so you could type in the code snippets to drive home the various points the author is making. A concise book, most knowledge points are just briefly mentioned, isolated points are seldom repeated, points building up upon each other are presented progressively with independent examples. Suitable for people who have old school C++ experience. For novices, better start with a tutorial first. Very happy to have pre-ordered now seeing it is out of order. Only given 4 stars because of poor editing job by the publisher. Many typos for the first print, words like "ultimate" can be spelled wrong, where is your spell checker? Nevertheless, a book to be placed on the desk not the shelf, I would prefer and buy a hardcopy if it is available.
K**.
Perfect if you already know programming fundamentals in other languages
Although it is self described as a tour through the language I feel that this is the perfect level of instruction for programmers with previous experience in other languages. The book is short but yet somehow manages to convey exactly what you need to get started with serious C++ development without leaving it feeling basic. There will be areas that require additional reference but this book prepares you with all the fundamentals giving you the base from which to work. I wish all programming books were written in this short, concise, and very well articulated manner. Introductory books are needed for first time programmers, for the rest of us we need books like this that don't waste our time explaining what a variable is and get us up and running.
A**P
Very well written - clear and concise
Coming from a java and .NET background, this book is turning out to be the best resource for me to learn C++. Searching for learning resources online, for C++, yields a lot of results. But, its a mix of old C++ and new. I didn't find anything as clear and updated (to C++20 standards) explaining how C++ code should be written today. The advice section at the end of each chapter points the reader to an online resource at github that is maintained by the author. These are core guidelines or best practices about everything related to programming in C++. All C++ features are explained concisely but very clearly. The most difficult thing to understand for someone coming from a java or .NET environment is acquiring and freeing memory resources (pointers) in C++. I went through many other texts and video courses but wasn't 100% comfortable until I read this book. This may be a tour of C++ for new programmers but I don't think programmers fluent in other languages will need anything else.
S**X
Modern C++ in a nutshell
This book is less than 250 pages. It presents modern C++ features that come with C++17 together with some future (most likely) C++20 features (such as concept and span). It should take a couple of hours, or up to 2 or 3 days to read from cover to cover. The C++20 features introduced in this book are nice preview to look ahead on the upcoming C++20 standard. It best suits a former C++ programmer (C++ 98) to get a quick impression of C++ 17. It doesn't not suit a programmer with zero C++ knowledge. This is not a C++ beginner's book. In essence, this book is <Modern C++ in a Nutshell>. Reading this book, you won't become a master of modern C++, but you will be equipped with a fair amount knowledge in modern C++ so you know what-to-look-for, and when-to-look-deep. Personally I wish the author could have discussed somewhat more on class invariant. I don't have any other quibbles.
A**R
Great C++ review
Great book written by the creator of C++ However you have to know about programming before reading this. This is a concise book which delivers lots of information in a stepwise matter. I had to pause and practice the concepts before moving forward.
L**K
It is what I needed.
Good for learning C++ programming.
J**A
Imprescindible. Conciso, claro y al punto.
Se trata de un libro compacto y bien estructurado, que repasa prácticamente todas las características del lenguaje C++ hasta C++17 y con alguna breve incursión en características de C++20. El título está perfectamente puesto, el libro es un "tour" que revisa todos los aspectos del lenguaje sin entrar en los detalles más técnicos.
G**O
Muito Bom!
Um dos melhores livros de C++, para quem quer se atualizar melhor e ter um overview da linguagem.
M**Q
not for noobs, must have knowledge of language before purchasing this book ...
not for noobs, must have knowledge of language before purchasing this book ...
S**H
Short and snappy overview of what constitutes C++ in 2019
Written as an intermediate level book between Stroustrup's beginner level "Programming -- Principles and Practice" and expert level "The C++ Programming Language", this book introduces the core concepts and language features that define C++ with just enough explanation for a moderately experienced programmer to understand what they are used for and when to use them. As such it is probably the ideal book for somebody who is experienced with another language who wants to learn how C++ differs or implements similar concepts, or a programmer familiar with older C++ code who wants to learn what is new in the latest language revisions. The book is written with Stroustrup's usual clarity and precision, and provides valuable insights into the language's design and evolution from the horse's mouth. "The C++ Programming Language" gives far more detail in this regard (occasionally too much), but as of writing it only covers the language up to C++11 whilst this book is fully up to date with C++17 and contains a preview of the likely features of C++20. If I was to fault the book at all it is that there is too much focus on "concepts" (the language feature) which are planned for 20 and hence aren't likely available where you work, but I guess that will become less true with time so it's probably good to have them explained somewhere. Whilst this an excellent overview, once you've read this book you will probably still want and need more information if you want to use C++ effectively. Scott Meyer "Effective C++" and "Effective Modern C++" are the obvious choice for that, and are widely acknowledged as The Bible for C++ programmers. After that, if you have a few years C++ experience under your belt and truly want to master the language then "The C++ Programming Language" is definitive. Maybe by then we'll have a new edition for C++20 as well.
Trustpilot
5 days ago
3 days ago