A Tour of C++ (C++ In-Depth Series)

2nd Edition
256
English
0134997832
9780134997834
28 Jun

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.

Reviews (57)

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:

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 . 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.

The perfect book for people who already know C++

Bought the book because it came highly recommended by experts. Also the author, Bjarne Stroustroup, is the original author of C++. Who could POSSIBLY know C++ better than the author of the language? Well, no one. But the real issue from my perspective is: Does this book actually help a newbie learn C++? The answer to that question, sadly, is NO. Prof. Stroustroup has written this book for C++ experts. He glosses over issues like--what operating system to use, what IDE to use, what are the differences between various C++ environments, what issues could trip-up a newbie programmer etc. The entire book is littered with 3-line code fragments that beautifully illustrate a specific language feature, but you cannot easily take those 3-line code fragments and do anything useful with them unless you're already an expert C++ developer. All this begs the question--why buy this book if you're trying to learn C++. Let the experts buy it and heap 5* ratings on it.

As brief a possible, but no briefer

Few authors have the respect for the reader and the confidence necessary to write books that are only exactly as long as they need to be. This book is another example from Stroustrup which models this ideal. I don't hesitate to buy later editions of books I already own by Stroustrup since 1) they're invariably the authoritative work on the subject and 2) its very unlikely to be a waste of my time. This book does not attempt to teach programming with C++ but will give an existing programmer a select and concise overview of both previously existing and new C++ facilities.

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.

An excellent way to become familiar with modern (and future) C++

I majored in electrical engineering and worked three years in the aerospace industry. Between device-dependent embedded code and archaic ANSI C and C++0x environments, I had no idea what I was missing out on until now. I am currently in an industry that is a little more trusting of deploying products built on the latest compilers including most of these features. This perspective was really valuable to me because it gave me a high level vision for how all of the language features and standard library tools fit together. With wise use of the scope and std features you can pay such little performance penalties for massive improvements in code base size, clarity and resource management. I will be keeping this by my desk for reference.

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...

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.

A Fantastic Text For Both the Experienced & Inexperienced C++ Programmer:

This textbook is a fantastic resource for those C++ programmers that are either experienced and well versed in the language, and ALSO those of us that not so well versed or knowledgeable of the discipline. It's wrote by the originator of the language and has plenty of helpful resources & examples for the reader/programmer. It probably more appropriate for the beginner or intermediate user, than the savvy professional, but it is helpful to EITHER person.

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.

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:

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 . 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.

The perfect book for people who already know C++

Bought the book because it came highly recommended by experts. Also the author, Bjarne Stroustroup, is the original author of C++. Who could POSSIBLY know C++ better than the author of the language? Well, no one. But the real issue from my perspective is: Does this book actually help a newbie learn C++? The answer to that question, sadly, is NO. Prof. Stroustroup has written this book for C++ experts. He glosses over issues like--what operating system to use, what IDE to use, what are the differences between various C++ environments, what issues could trip-up a newbie programmer etc. The entire book is littered with 3-line code fragments that beautifully illustrate a specific language feature, but you cannot easily take those 3-line code fragments and do anything useful with them unless you're already an expert C++ developer. All this begs the question--why buy this book if you're trying to learn C++. Let the experts buy it and heap 5* ratings on it.

As brief a possible, but no briefer

Few authors have the respect for the reader and the confidence necessary to write books that are only exactly as long as they need to be. This book is another example from Stroustrup which models this ideal. I don't hesitate to buy later editions of books I already own by Stroustrup since 1) they're invariably the authoritative work on the subject and 2) its very unlikely to be a waste of my time. This book does not attempt to teach programming with C++ but will give an existing programmer a select and concise overview of both previously existing and new C++ facilities.

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.

An excellent way to become familiar with modern (and future) C++

I majored in electrical engineering and worked three years in the aerospace industry. Between device-dependent embedded code and archaic ANSI C and C++0x environments, I had no idea what I was missing out on until now. I am currently in an industry that is a little more trusting of deploying products built on the latest compilers including most of these features. This perspective was really valuable to me because it gave me a high level vision for how all of the language features and standard library tools fit together. With wise use of the scope and std features you can pay such little performance penalties for massive improvements in code base size, clarity and resource management. I will be keeping this by my desk for reference.

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...

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.

A Fantastic Text For Both the Experienced & Inexperienced C++ Programmer:

This textbook is a fantastic resource for those C++ programmers that are either experienced and well versed in the language, and ALSO those of us that not so well versed or knowledgeable of the discipline. It's wrote by the originator of the language and has plenty of helpful resources & examples for the reader/programmer. It probably more appropriate for the beginner or intermediate user, than the savvy professional, but it is helpful to EITHER person.

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.

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.

Concise, clear presentation of C++ from the original designer and implementer.

An expert is one who truly understands a subject. Bjarne is an expert. Over and again in this book he shows the simplicity of a true expert's view. I've practiced C++ for years. I found Bjarne's presentation clarifying -- I see more clearly now. Highly recommend.

Holistic Overview of Recent Language Changes

It had been several years since I had written production C++ code. So I was looking for a good starting point to get me up to speed on the recent language and library changes. Other resources I tried quickly went in depth on a narrow range of topics or glossed over changes at too high a level. A Tour of C++ covers the major highlights for both C++17 and C++20 with code representing canonical usages of the language and libraries. Furthermore, the author makes it a point to show how those constructs build upon and interact with each other. Each chapter concludes with a summary and guidance on how and when to use those constructs. This has served as a great starting point to get reacquainted with the evolving language led by an expert tour guide.

One of the best C++ resources

This book is absolutely one of the best C++ resources out there. The content is very straight to the point and very well explained. It doesn’t not waste your time by putting filler information in there. You can tell because this book is fairly small but is dense in information. This book is for people who have already have programmed C++ before and just need a quick reference for modern C++. It is not for a beginner programmer!

A very concise summary of CPP's features

A great introduction to the baked-in language features of CPP. A great starting point for people getting started with the language.

A concise and useful reference to modern c++

I own a few books on modern C++, including Bjarne's other book The C++ Programming Language. but A Tour of C++ is the one that I reach forif I'm looking for an answer. The book is short and to the point, but covers a lot of areas. There is usually a code snippet to accompany the text, which is very helpful. If you're looking for a book to get you up to speed on Modern C++, I can't think of none better. Looking forward to a third edition to accompany C++20.

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.

A good consice book

I really liked this book, it serves very well as a concise overview of C++ and it can be handy as a reference while working with C++. I wouldn't suggest it though for beginners or people who do not have experience with at least one programming language that offers object oriented capabilities.

Good overview of latest features

I had programmed in C++ previously but wasn't familiar with some of the new changes in latest versions of C++ so I found this book as detailed enough description and thinking behind the new features. It even covered a feature that jusr came out in 2019

Thin but informative

I usually prefer thick books like code complete, C++ Primer, however, this thin book exceeds my expectation. An informative book about C++, especially the new features.

It's amazing

I hesitated a moment to buy this book because I thought it's a bit expensive. Now I read a few chapters and found I would definitely buy it even if the price doubled.

Refresher

Gives you a great flavor of C++. Highly recommended! Just like any other book written by Bjarne.

Practical and objective

I really liked the book. You can read the book non-sequentially by skipping to the chapters of greatest interest.

A quick reference to C++

A short book for most of what is needed about C++

Great

Very useful

Concise and well written!

This was a great purchase. I really enjoy reading this book. It has up-do-date content covering all aspects of modern C++ programming.

Great book to understand the gist of modern C++ for experienced programmers

I appreciate how concise it is.

Excelent

This book is the perfect guide for moving to C++17 from C++98. Some C++20 proposed features are also covered, with in-depth coverage on why they are needed and how they should be used. Highly recommend!

Kind of hard to keep up with but it's a really great book

Somethings are explained in full details but it does give you resources to learn further about certain topics. The book is great but you have to be prepared to research on the internet for things you don't understand.😁

An awsome book!

An awsome read to either refresh your knowledge or learn a thing or two! Highly recommend if you want a consistent read.

Improved, but still a little terse

Too brief on the harder stuff, too strutting on the good.

Really useful

Concise and thoughtful guide to C++, no water, excellent for interview preparation. I had a great pleasure reading it, a lot of respect to the author.

This is just a gem.

If you are a programmer and want to get started with C++, this is the best option you can choose. Loved it!

Great book. very informative

Great book. very informative

Most Advanced Programming language

For the past two decades I thought of C++ as a archaic system language far behind modern languages like Rust and Typescript; well I could not have been more wrong. Having absorbed the essence of Typescript and modern Java, I reckon C++ is even better. The notion of concepts is flexible while efficient; more fundamental and powerful compare to Interfaces in other languages. Too bad contracts didn't make the cut, which I'm sure will be covered in more detail in 3rd edition. C++ isn't just catching up but strides above other languages.

A waste of time if you dont already know C++

This is a bad book to get an idea about modern C++ if you dont already know the previous versions. The book has limited examples and is written very cryptic. I am an advanced java programmer(7+ years) but never used much C++ as I never liked the language and tried to stay away from it in the past. If you dont already know some C++, dont buy this book, its a waste on effort and money.

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.

This is an overview of modern C++, its emphasis is on tour more than in-depth.

This is a clear and concise overview of how to use C++ as current programming language without being held back too much by its roots in C. Concepts are described at a relative high level. For an in-depth understanding of each language concept described you would need to consult more thorough. To be fair, most the detailed material needed to complement this book is readily available on the Internet.

The best, from the best source

For those familiar with older versions of C++ wanting to be brought up to date with the extremely powerful additions to the language over the last 10 or so years, this is the place to start.

Best book for intermediate programmer

Best book for intermediate programmer. Introduces lots of the concepts that are being used more and more in other languages. Not front to back or syntax but as bjarne is famous for, explainative and comprehensive interesting read.

Gets right to the point.

As close to perfect as you will get in your journey towards learning C++.

Swift delivery

Got for my son, says it's exactly what he wanted

Not recommended

There is lots of information in this book, but the target audience is unclear to me. If you already have knowledge of C++, it will move too slow, and not offer much interesting insight. If you are a complete beginner it is probably too incomplete to really be helpful. Either way, probably not an efficient use of your time.

An excellent book

I will highly recommend the book "A tour of C++" by Bjarne Stroustrup for programmers with intermediate knowledge of C++, particularly those who are familiar with C++98 and are still new to C++11 and more recent versions. Also it is a good book for experts who would like to take a tour (as the name says) of C++98 and the added features in the newer versions. This book is very concise and suitable for readers who would like to get familiar with only the high-level language facilities provided by C++. To have a more detailed understanding of every language feature, I suggest toy read "The C++ Programming Language" by the same author which is also considered to be the Bible of C++. Note that the later is only C++11 at the time of writing the review (17 Jan 2021).

Clear content well summarized

As the title suggests, this is a tour. it doesn't delve into any topic but it goes through all the aspects of the language. I recommend this book for all levels of knowledge of C++. I'm sure that regardless your understanding of the language you will learn from this book.

Book is too expensive

For the information and the number of pages, I could find in the book I consider that the price is too steep. I thought it has more that what I could find online about C++20 but not quite. To me looks that was written in a hurry.

A good start for re-learning the "modernized" language

Refreshingly honest (clearly this is an intro, not an all promissing video course to make you a "C++ expert" in 1 video...) I find the structuring great, this book helps me to re-learn the "modern version" of this language.

Trending Books