

Desertcart purchases this item on your behalf and handles shipping, customs, and support to Northern Mariana Islands.
🚀 Code smarter, not harder — the ultimate C++11 blueprint by its creator!
The C++ Programming Language, Fourth Edition, is the authoritative, comprehensive guide to modern C++11, written by Bjarne Stroustrup, the language's original designer. This edition features fully integrated coverage of new language features like concurrency, lambdas, and move semantics, alongside detailed explanations of core concepts and the Standard Library. Its durable hardcover with layflat binding enhances usability, making it an essential reference for professional programmers aiming to master contemporary C++ development.







| Best Sellers Rank | #121,656 in Books ( See Top 100 in Books ) #5 in C++ Programming Language #49 in Computer Programming Languages |
| Customer Reviews | 4.6 out of 5 stars 1,266 Reviews |
M**R
C++ is Better with C++11
I programmed professionally for 14+ years primarily in Microsoft languages but never touched C or C++. Began looking at some simulation technologies in 2009 and 2011 and ramped up on C++98 and C. Learned them well enough to produce results. C++11 came out and I did not give it much thought as I had already invested much in an established version (including the STL for C++98 and C-Style programming). After significant time reviewing books and materials in the context of C++98 from Nicolai Josuttis, Bjorn Karlson, and others, starting again with C++11 was not desirable. As C++ versions tend to be long lived and stable, I think that is still a good perspective. I have seen articles about improvements to rvalue references in C++11 and other statements from others regarding lambdas in C++11. In other places I have seen statements about how C++11 can improve the way code is written. None of that convinced me that there was an urgent need to understand C++11. Then I read a book by Artur Moreira called SFML Game Development in which he adopted many features from C++11. I am not a game developer, just researching cross platform graphics. Artur Moreira used C++11 quite effectively in his book and I thought that perhaps I should plan on reviewing C++11. When I saw several conventions of which I was unfamiliar while reading Artur Moreira's book, I decided it was time to review C++ all over again. C++11 introduces some useful concepts such as universal initializers, reference counting, and other concepts. Some of us know these concepts from our use and exposure to other languages. Microsoft C# has the concept of a foreach applied to interfaces of IEnumerable. It is similar in C++11 but presented differently. Rather than a foreach keyword with operands divided with an in operator, you have a for keyword with a : operator applied to a type with a pair of begin/end functions. I understand these concepts and can accept the syntax, but it aids productive use of these concepts to understand how they function in a concrete way as well as the philosophy associated with their use in the context of C++11. That brings us to Bjarne Stroustrup who wrote this book, C++ Programming Language 4th Edition. If anyone is going to explain the philosophy of C++11, he would be the top candidate. He invented C++. There are examples in the past of inventors who could not explain well their inventions, but Mr. Stroustrup is the exception. Perhaps due to his long, long history of writing and lecturing, in addition to his active participation in technology he explains theory and reality quite well. I have read some of his books from 10 or 20 years ago such as the Design and Evolution of C++ and maybe an earlier version of this book. I found his older books difficult to read and very obtuse. His writing in this book has shifted 360 degrees in which his words are in a fresh, contemporary style that is clear and candid. The most important benefit you gain from reading Bjarne Stroustrup's book is that you gain the perspectives, best practice, and preferred conventions for C++11. He gives advice and calls out common errors and where you might want to focus to have the code come out in a better way. You are NOT learning what is new in C++11 versus C++98. Instead, he is presenting C++ in the way it is today. This is important because you are not jumping back and forth conceptually between C++98 and C++11. He shows C++ in its new form in a complete and coherent way. This way, you can relearn C++ from a book that ties all the most appropriate parts of the language from start to finish. You can still keep the old ways in the back of your mind if you ever need them but he does talk about these things when necessary such as C-style casts (which I still use) versus using the bracket notation to convert type. His tone is very appealing. He does not speak about C++ dogmatically nor does he speak as if all is perfect. Rather, he proceeds through a presentation of C++ that unwaveringly emphasizes the right choices and considerations while admiting when some recommendation may not hold. The best example of that is in his discussion of the universal initializer. He makes an excellent case for the universal initializer, which I plan to use to maximum effect when I finally decide to enable C++11 compiler flags, but he also reveals ways in which the "universal" initializer may not be so universal. That candor makes the text much more valuable as it prepares one's expectations for what they may realistically expect in conforming compiler implementations of the C++ language. Again, I admit that I did not enjoy Mr. Stroustrup's books from 10 or 20 years ago. I reluctantly accessed this book because after a 1 year break from writing any C++ in my leisure time, I needed to look up some things. I thought I would just use this book plus Nicolai Josuttis' latest book on the STL as reference. I am still writing C++98 centric code and so the books as reference was somewhat less useful in some areas. However, as I referred more to this book from Bjarne Stroustrup, the writing style was so different and the explainations so much more clear that I was much more inclined to stop what I was doing and review the text in more detail. I decided now is the time to relearn C++ as there is now a guide that shows the way from start to finish. On that note, his book is a great manual on software development today. Even if you have experience, he describes a set of ideas in a way that if you thought about them more, you would produce much better software. He goes into the different types of programming styles (OO, procedural, generic, etc) and into low level versus high level providing presenting his point of view out of his extensive experience in languages, programming, and technology. He spends a tremendous amount of time on abstraction, structure, and code elegance through proper code definition. After reading his book you will definitely advance in your perception of software code. Me ... I am not a C++ programmer but someone with a professional background in software code who moved into C++ occassionally in my spare time in order to understand certain things in computer technology at a deeper level. C++ is in my toolbelt and I thank Bjarne Stroustrup for making it a more useful tool by way of understanding. I still do not recommend C++ for normal IT work, websites, and line of business systems better served by quick shift tools like Microsoft .NET and Java applied to frequently evolving circumstances. Rather, C++ is a language you can learn if nothing else but to better your cognition in the construction of code and the design of systems defined by code. The design and logical insights in this book are hugely valuable and he writes in a way where the concepts presented are digestable if you have any programming experience. You just need time and attention. C++ seems to have evolved well. It feels cleaner and more streamlined than even Microsoft C#. Admittedly some aspects of C++ remains inaccessible to entry level programming as part of a larger team and that is okay. Such things are necessary tools for more finely calibrating code in ways not needed in conventional IT (web systems, databases and batch jobs). I once perceived C++ as a low level tool with high level mechanisms. Bjarne Stroustrup has changed my perspective to see C++ as potentially a master language that works best when you understand it the right way.
R**N
A significant rework of the 3rd edition
Apparently, I lucked out and got a decent book with decent shipping, as the quality of my copy is superb. The C++ Programming Language (3rd Edition) and C++ in a Nutshell are my two primary go-to references for day-to-day C++ programming (and stackoverflow of course). As a primarily-embedded C/C++ programmer for over 25 years, I don't read books like this cover-to-cover. Instead, I bounce around the book to explore topics, gain deeper insight, or refresh my memory on some obscure corner of the language. Having done that now for over a month, I've come to like this new edition. Typography-wise, the 4th edition is easier on the eyes, with better use of whitespace, liberal use of navy blue for keywords and program examples, and more tables and graphics than in the previous edition. This may sound trivial, but it's not--I find the improved layout makes this edition much more accessible as a reference than the more densely-printed 3rd edition. This edition is a significant rewrite from the 3rd edition. Obviously, it contains a lot of new material covering the C++11 additions to the language. As you would expect, there are entire new chapters on concurrency and threads and processes. However, there are also significant expansions of previous topics. For example, the discussion of the iostream 'locale' facilities occupied a little more than one page in the 3rd edition; in the 4th edition 'locale' gets an entire chapter of its own, with a much greater discussion of facets, money, and the like. Concepts like RAII are now covered in detail. Overall, my impression is that Mr. Stroustrup attempted to expand topics that are of increasing prominence today, and for the most part succeeded. In addition, one of my favorite parts of the older edition, Mr. Stroustrup's lists of programming advice at the end of each chapter, are still there, revised and expanded as necessary. Sadly, what is missing are the old 3rd edition chapters on Development and Design, and Design and Programming. Not only were these sort of a condensed Peopleware: Productive Projects and Teams (3rd Edition) that I enjoyed reading, they also allowed the word 'moron' to appear in the index of the 3rd edition--a word that is now gone from the index of the 4th edition, but still applicable on many product teams :-) My only complaint with this new 4th edition is that it truly does represent C++ 'moving on'. There is no delineation in the text between C++11 additions and the earlier language constructs. As Mr. Stroustrup mentions in the intro, this is a deliberate choice on his part to present C++ as an "integrated whole, rather than as a layer cake". The old 3rd edition Appendix B "Compatibility" is now Chapter 44, "Compatibility", and the list of changes is presented there. I would have preferred that Mr. Stroustrup would at least have put margin bars in those places where C++11 changes occurred. Not everyone is running the latest GNU desktop compiler; in the embedded world in particular change comes slowly, and some of the C++11 changes are subtle enough that you might occasionally believe an example would work until the compiler informs you otherwise. Overall, I consider this an excellent reference to C++, more accessible than the previous edition, updated with the latest techniques, and with better coverage of contemporary topics. That said, I also intend to keep my 3rd edition around for a while longer, as a lot of the sections pertaining to dealing with older compilers and interfacing with older libraries did not make it to this new edition. As management likes to say: 'let them eat (layer) cake'.
K**N
C++11 in full detail
C++ Programming Language, 4th Edition is a very long book of 1346 pages and quite small print. It is a complete presentation of the C++11 programming language, including the standard library. I have owned over 500 technical books, and this is a very good presentation. If you are serious about C++11 programming, then I believe this book is essential for you to own. I recommend buying the hardcover version, because you will be referring to this book for many years into the future. The presentation is somewhat like a reference manual, but it goes much farther with detailed discussion on semantics. In the hands of a C++11 professional, this book will be invaluable. But please note this book is not written for novice programmers. It assumes you know how to program and presents the C++11 standard language and library succinctly. If you are an accomplished programmer in other languages and accomplished at assimilating information, then this book would be appropriate to consider. If you are a novice programmer, you should buy an introductory book on C++ and purchase this one once you have assimilated the fundamental concepts of C++. The book presentation elaborates on the syntax and semantics of the language and library. And you get all the expert commentary you'd expect from Bjarne Stroustrup. But this is not a cookbook of code examples to accomplish specific tasks. It is entirely focused on how to effectively use the language and the library. There are problem sets for each chapter available online. And of course, you can find endless code examples using google as well. This book focuses entirely on the syntax and semantics of the language and library constructs. It does what it does very well, leaving the rest up to you. The book presentation also references the C++11 standard extensively, which is very helpful to someone needing more clarity. This book has proved to be exactly what I was hoping for when I purchased it. In my eyes, this book deserves a 5 star rating, with the caution it is not intended for programming novices.
R**S
Easier read than the standard docs however some dense prose here; at least the cross reference links are good
I purchased this after purchasing Tour of C++ in order to start filling in my C++ knowledge gaps that Tour helped me to identify. This book is an easier read than the standards documentation however there is some dense and overly concise prose here though the cross reference links really help. There is a fair amount of detail on the different areas of C++. Fortunately there are cross reference links between sections so that when something is first brought up with some amount of description, there will be a section link to other areas of the book that provide additional information on the topic or an associated topic. The result is that I spend time jumping from section to section which in a physical book can be a bit time consuming however at least it helps to discover a topic and associated topics fairly easily. I would consider this book to be an easier to read, annotated version of the C++11 standards. It is not a book from which to learn programming but rather a book to understand how particular C++11 language features work and can be used. I have seen mistakes in some of the source code examples which was a bit confusing at first as I doubted myself however after reading that others also have seen mistakes, I can deal with that. Some example mistakes I originally thought introduced a new feature of C++11 until I realized it was a mistake. If you are wanting to start to learn C++, I suggest other books. This is not an introductory text as it assumes some background in software engineering and computer science. While C++11 has additional capabilities, you can start with an older, less demanding text, especially if you are using an older compiler, and then move to this one which has much more detail and goes into C++11 specifically. This brings up the point that since this is about C++11 differences of syntax between older C++ and C++11 are not marked though sometimes differences are alluded to in the discussion. So at times a programmer from older C/C++ may have double take and WTF moments. There have been times when I thought I was reading php rather than C++. I really like what has been done to C++ with the new standard and this book does provide quite a bit of information and detail. The writing is fairly detailed though there have been times when the detail was insufficient as it assumed some background knowledge I needed to acquire or refresh. My program for using this book is to spend some time trying to get my head around the changes to C++ and to then begin working with examples using a copy of Visual Studio 2012 as that is what I am used to. However GCC seems to have better support for the C++11 new features especially in the area of templates. On the other hand that may change next week.
D**N
So far so good. Get the hardcover.
I have about 20-25 hours invested in this and 'Im only through the Part I "Tour of C++". My initial impression is that I like it a lot. I like the writing style. I like the content. It feels "right" I am learning/re-learning at a good pace. It is clicking with me. Its not filled with a lot of fluff or distracting analogies. It gets down to business and provides tons of info. I first dabbled in c/c++ like 15 years ago. I used primarily Deitel & Deitel "How to program C++ 3rd ed." years back. As well as a few pretty bad reference books. Did a few little tiny projects and took a few classes where I learned more and continued to use it. But I never programmed professionally. I never got in a day-to-day use of c++. So what I learned is old and rusty. I am out of practice. I plan on going through this pretty much cover to cover. I hope it will help me shake off the dust, keep momentum and be productive in C++ sometime soon. Based on several forum recommendations and other Amazon reviews I also picked up "C++ Primer 5th ed." as a companion to this text. So far in ~130 pages of content in the Stroustrup text I have read about 25 pages in the Primer book that provided another perspective to help me understand things better. I also like the physical text/typesetting/paper/binding. I got the hardcover. It seems as solid as any other hardcover and expect it to last. I would not want this in a softcover. I would imagine reading this as an e-book would be pretty terrible too. I nearly always find myself flipping between multiple sections in any technical book. That's just tedious on a e-reader. I will update my rating as I get further along. Edit: 2014-03-30 I am up to 530 pages tonight, plus maybe 15-20 pages of things I looked up further ahead to makes sense of earlier content. Still liking it. Provides more understanding than I had from previous attempts I made to learn C++. Sticking with it. I also needed to read ~30 pages from the C++ Primer book to augment things that just didn't click for me by just reading the Stroustrup text.
D**D
Clear, comprehensive without being repetitive
I should have posted this review a long time ago. He's one of the very best writers in the computer science field, he strikes the correct balance with clear, concise explanations with just the right amount of detail and coverage. Since C++ supports several programming styles the book is necessarily large, but it's actually a pleasure to read since there aren't needed duplications but things are presented in the correct order. I will purchase any book he writes.
M**Z
A great book for programmers to really understand and use the language
For some reason I had the mistaken impression that Bjarne had made a nice language, but wasn't the greatest at explaining it. That was wrong. This book is masterful in covering both the how and the why. It uses an "iterative refinement" approach, first talking about some overall properties and goals of the language, then in the first 100 pages giving a tour of the major concepts and language features (which is a great introduction to the most important C++11 features for programmers like me who originally learned older versions), then giving an in-depth treatment of each concept. And even these in-depth treatments don't read like a reference manual -- all the way through it explains why things are they way they are. It also gives important, succinct, and mostly unambiguous advice on which features and concepts are the ones you should focus on and use most of the time. This is not a book to learn the basics of programming, but even for new programmers the author provides helpful pointers to resources, and gives advice for reading some sections just to get a flavor, without worrying to much about understanding the details on the first pass. The author comes across as a kind, humble man with a sense of humor, who really wants you to understand the language and use it well to write good programs.
M**S
The book is good. It's instructive
The book is good. It's instructive. It's going to be a very good reference when I need to code in C++. I do have some issues. I have 20+ years experience with C++ and more with C, and read the third edition. Some of these negatives are probably due to C++11 shock. 1) A lot of stuff gets introduced up front, which I found a bit overwhelming because concepts were being used before fully explained; Some people won't find this troublesome. Because I know C++, but I don't know C++11 ( and beyond,) I had to sort of keep mentally telling myself stuff I he was talking about as if I would understand, would be understood at some point. In some ways, I am not sure the book's introductory material was helpful, at least for me 2) The book is C++11, and since then, C++14 and C++17 came along. No big deal, you might think, and I would have agreed, until I ran into stuff that's explained one way in the book, and works opposite when compiled with VS17; this problem has cost me a lot of time trying to understand where the book went wrong, what changed, and why. For example, the behavior of 'auto x {1};' is different than what the book says, and it took me a lot of time to track down why; Wiser people will simply see this as a silly way to write code to begin with, and just accept how it works, rather than try to understand what went wrong. 3) The book is huge; And it probably has to be to be a complete reference. It just seems like the third edition was easier to read and understand, but in some ways I blame the language. It's jumped the shark in some ways, and unless they want to chop out the dead weight ( the old cruft causing confusion,) programmers will have to accept C++17 is now a horror show at times, IF you want to understand the whole language. A programmer could blissfully ignore the old cruft, write the most modern code possible, and not use the most confusing stuff. The focus of the book seems to be to tell all there is to tell, which sadly takes 1300 pages. So someone just wanting to code the most modern C++ might want a book that focused on that, but you had to admit a reference manual can be handy, and easier to use than google at times. But remember this is only a C++11 reference, so there's a bit of a problem there, because it's now an incomplete reference. Thankfully C++14 and C++17 aren't massive changes 4) Some of the examples are confusing; These mostly seem to be due to templates, which I have a real love/hate relationship with, and was never good at reading the more elaborate cases for. Other cases, seems like language is just complex or the std lib code is complex. For example, the whole promise/future discussion gave me an actual headache as memory serves.
S**M
Narrow design, impossible reading.
I bought the Hardcover version from Amazon Germany, but the dimensions are different from the original, it is narrower and the margins on the pages are insufficient, especially the inside area is impossible to read, so I am returning it. This is all I wrote about the physical deficiencies of the product, I think it is a good book as a source of information.
P**M
Buch sehr gut, aber Kindle Umsetzung schlecht
Das Buch gibt einen tollen Überblick und ist eine sehr gute Referenz. Von der Kindle-Version kann ich nur abraten. Die Programmbeispiele sind unleserlich, da einige Zeichen übereinander dargestellt sind und unnötige Leerzeichen enthalten sind. Das Buch hätte 5 Sterne verdient. Durch die schlechte Kindle-Unsetzung gibt es nur 3 Sterne.
A**R
the C++ std libs might offer far better design and speed
Bjarne Stroustrup has this intuitive, no-nonsense way of explaining things. He keeps emphasizing the philosophy of working with the C++ language to achieve performance, and I think this is a valid philosophy indeed! Truly, it makes sense. I myself have been guilty of using low-level C mechanisms to 'extract higher performance'. Hard though it might be to accept to several people, the C++ std libs might offer far better design and speed! The prose is straightforward, and the examples are no-frills code segments that directly get to the point. Excellent book!
B**G
Complete, but not for the beginner
The first chapter gives an extremely useful overview of C++11, the latest C++ standard. The rest of the book is more of a complete reference that fills in details of the standard, the motivations for the choices made, and the author's opinions about those choices, favorable or not. Stroustrup, as the original creator of the language, is uniquely placed to go into details. Many programmers like myself will only rarely need to go into great depth on any topic, but it is comforting to know that the answers are at hand in this book. One noteworthy fact is the extreme care taken in preparation of the text: In going through the whole book, admittedly skimming plenty of details, I found fewer than a dozen errors, some of them just nit-picking. This book is not intended as a primer to show beginners how to program in C++. It does deserve to be on the bookshelf of anyone aspiring to in-depth knowledge of C++.
A**R
C++プログラマー、学習者は持っておくと良い
英語もシンプルでわかりやすい。全部を読む必要はなく、自分の興味のある箇所だけ読むと良い。 Kindle版だと、ソースコードのみ読みことも可能で、それだけでもC++の理解が深まる。
Trustpilot
3 days ago
4 days ago