- Paperback: 1368 pages
- Publisher: Addison-Wesley Professional; 4 edition (May 19, 2013)
- Language: English
- ISBN-10: 0321563840
- ISBN-13: 978-0321563842
- Product Dimensions: 7.4 x 1.8 x 9 inches
- Shipping Weight: 3.8 pounds (View shipping rates and policies)
- Average Customer Review: 661 customer reviews
- Amazon Best Sellers Rank: #23,945 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
The C++ Programming Language, 4th Edition 4th Edition
Use the Amazon App to scan ISBNs and compare prices.
Frequently bought together
Customers who bought this item also bought
About the Author
Bjarne Stroustrup (www.stroustrup.com) is the designer and original implementer of C++, as well as the author of Programming: Principles and Practice Using C++ (Addison-Wesley, 2009), The C++ Programming Language (Addison-Wesley, 1985, 1991, 1997, 2000), and many popular and academic publications. Dr. Stroustrup is a University Distinguished Professor at Texas A&M University and the holder of the College of Engineering Chair in Computer Science. He is a member of the U.S. National Academy of Engineering, an IEEE Fellow, and an ACM fellow. His research interests include distributed systems, design, programming techniques, software development tools, and programming languages. He is actively involved in the ISO standardization of C++.
Browse award-winning titles. See more
Top customer reviews
Side note: This book attempts to get users in the habit of using C++11 assignment operators and such. This isn't necessarily a bad thing, but it should be worth noting that some compilers will not work with these examples without specifying that it is written in C++11 format. (i.e. affixing -std=c++11 during compilation. Some professors who teach out of other C++ books may mark you wrong for using ++11 or even ++14 conventions.)
I would recommend this book to anyone wishing to really delve deep into C++ and produce efficient, clean code. Anyone looking to get "closer to the machine", so to speak, would most likely find this book to tickle their fancy.
I really liked it's structure: there's a brief "Tour of C++" before the more detailed chapters. In this tour, you can see in a glance what C++11 offers for many programming tasks that's not present in earlier standards: variadic templates, static assertions, many concurrency primitives, a new uniform initialization syntax, initializer lists, range-for loop, new STL containers, etc.
After that, there are detailed chapters intended to cover all the details of all the language features and the STL. After seeing a lot of cool stuff in the tour, you are motivated enough to go through the detailed descriptions of everything written by the C++ creator himself.
But pay attention to the title: the book is about "The C++ Programming Language". It's not intended to instruct you about:
- How to program;
- How to write efficient, readable and/or modularized code using C++;
- How to use concurrency to enhance the performance of algorithms;
- How to design APIs (although the STL is a good example in many situations);
- What are the best tools (compiler, VCSs, build systems, IDEs, libraries) to develop C++ programs.
It's rather a hitchhiker's guide to C++.
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'.