The C++ Programming Language (hardcover) (4th Edition) 4th Edition
Use the Amazon App to scan ISBNs and compare prices.
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.
Frequently bought together
Customers who viewed this item also viewed
About the Author
Bjarne Stroustrup is the designer and original implementer of C++ and the author of Programming: Principles and Practice Using C++, 2nd Edition and The C++ Programming Language, among others. Having previously worked at Bell Labs, AT&T Labs - Research, and Texas A&M University, he is currently Managing Director in the technology division of Morgan Stanley in New York City. The recipient of numerous honors, including The National Academy of Engineering 2018 Charles Stark Draper Prize for Engineering “for conceptualizing and developing the C++ programming language, Dr. Stroustrup is a member of the National Academy of Engineering, an AT&T Fellow, an AT&T Bell Laboratories Fellow, an IEEE Fellow, and an ACM Fellow. He was voted into Electronic Design's Engineering Hall of Fame in 2013. His research interests include distributed systems, simulation, design, programming techniques, software development tools, and programming languages, and he remains actively involved in the ANSI/ISO standardization of C++. Dr. Stroustrup holds an advanced degree from the University of Aarhus in his native Denmark and a Ph.D. in Computer Science from Cambridge University, England.
There was a problem filtering reviews right now. Please try again later.
If I were new to C++, I would not start learning C++ with this book. Rather, I would use these below three steps and the relevant books in this order:
1. Accelerated C++ by Andrew Koenig & Barbara Moo -- Read and practice example code and exercises from this book first.
2. Programming: Principles and Practice Using C++ (2nd Edition) by Bjarne Stroustrup -- Chapters 5,6, and 7 are gems in this book. You can in fact use this book in parallel with the Accelerated C++ book and
3. (a) The C++ Programming Language (4th Edition) by Bjarne Stroustrup, -- Definite reference book to have.
3. (b) The C++ Standard Library: A Tutorial and Reference (2nd Edition) by Nicolai M. Josuttis, -- Clear examples and very methodical
3. (c) C++ Templates: The Complete Guide by David Vandevoorde -- What can I say! This is simply a classic.
C++ is not a race. It is a marathon. So, enjoy learning and also make use of many many C++ resources online.
The next section (Chapters 6-29) is SUPPOSED to be a structured tutorial section, starting at square one; however, it is anything but! This section assumes you have read--and more importantly, thoroughly understand--the "tour" provided in the first section. This second section, unfortunately, ends up being more "lawyer speak" on C++ than an actual tutorial (IMHO). Now granted, you need to know the rules in order to create valid C++ programs; but come on! There's got to be a better way to present the subject matter than simply throwing a bunch of obscure rules at the reader. In addition to the "lawyer speak", I also found this section a little too "preachy" for my taste at times. However, in spite of my criticisms, I found this section to be the ultimate supplement to Lippman's "C++ Primer (5th ed)"; i.e. after reading Chapters 2-5, I used Lippman's book as a formal tutorial then came back to this section to take my skills and knowledge to the next level. Mr. Stroustrap divides this 2nd section into two parts, The Basics (types, pointers, functions, etc) and Abstraction Mechanisms (classes, constructors, hierarchies, templates, etc).
The final section (Chapters 30-44) examines the Standard Library. The Standard Library is just as important and integral a part of the C++ language as the language itself, akin to the C Standard Library but much more far-reaching. I remember reading somewhere (perhaps it was even this book) that the library description takes up 2/3 of the official C++ specification! The fact that the library is part of the C++ specification implies that its contents are fully supported, and hence presumably the most efficient implementations available... to a degree. [Meaning that the most efficient "general" solution is not necessarily the best solution for one's particular application.] Understanding what's available in the Standard Library and how to utilize it is obviously an important aspect of the language, and this last section is a valuable reference; but that's all it is (i.e. a reference vs a tutorial). Fortunately, several hard examples of the Standard Library are used throughout the earlier portions of the text, but it only scratches the surface.
Mr. Stroustrap created C++, so it shouldn't come as a surprise to anyone when I say that this is the definitive book on the subject. However, it is not necessarily the best book from which to learn C++. That said, I found the "crash course" in Chapters 2-5 invaluable, and I am grateful that he included it.
So, in summary, if you want to start from scratch and take a traditional structured approach to learning C++, I would suggest you seek an alternative book. The Lippman book I mentioned earlier is great, and I've seen lots of rave reviews about another of Mr. Stroustrup's books, "Programming: Principles and Practice Using C++ (2nd ed)"
If you're an experienced professional who needs to come up to speed with C++ in minimal time, then Chapters 2-5 are a good way to do it; but you might want to investigate Mr. Stroustrup's other book instead, "A Tour of C++". [Note, I have not read that book and cannot comment on its contents, but I assume it's a more detailed & structured version of Chapters 2-5 in this book.]
In both cases, beginner or professional, this book is THE ultimate reference source for all things C++.
Good luck in your C++ journey!
If you are doing modern C++ development, you need this book. The clarity of the descriptions and the completeness of coverage of what has become a vast language (when you include all the standard library features) will save you time, and inspire you to write clear, concise, elegant code.
If you are a C++ programmer, you need this book as a reference in order to understand the language and the intent behind some of the features (especially the new C++11).
I don't think this book is a starting point for beginners that want to learn the language. Who want to read 1000+ book when they just want to get started. I got put off by the 3rd edition when I started programming C++ and came back to it later. Use "A Tour of C++" from the same author to get the gist of the language and come back to this book once you are more experienced with the language. I also found the 4th edition to be clearer and better presented than the previous edition.
Finally, I will restate an advice I found useful from the C++ isofaq, whatever language you want to learn, there is 3 types of books you must have:
- 1 reference book to present you what is legal in the language
- 1 advice/rule book to present you what is moral in the language
- 1 example book
In my opinion the definitive C++ reference book is Bjarne book. You may not need it now but you will come back to it once you matured in the language, and when you really want to understand the feature you are using.
Top international reviews
Buy this one, but start with Lippman and maybe a few of Scott Meyer's Effective C++ series. For reference on std library, Josuttis book is outstanding. For advanced users, you should also read Herb Sutter's Exceptional C++ series.
Turning every other page one could find someone new to learn, for the seasoned of beginner, so long as you know how to use a C++ compiler going through this tome and some of it's examples is a real insight into not just how the language now stands, but how it has evolved.
Coming straight from Bjarne too one finds reading the text almost akin to talking to him in person, he explains so clearly and concisely what he is aiming to do, never over stepping the bounds of the current chapter of section, but always referring you onto other topics.
If you're an absolute beginner, or have never programmed in C++ before, this book is perhaps not for you, check out "A Tour of C++" which is a much more accessible companion to this book and also by Bjarne. Once you're happy with the Tour, then it is time for this, the main event, book to enter your development career.
If you are looking just to catch up the newest C++11 and C++14 standards and nothing else, there might be better options - there are chapters devoted specifically to the new features introduced in the latest standards, but the book overall strives to present a unified, up-to-date vision of what the best coding practices in C++ are, with little historical context.
There are some negative remarks in other reviews about the code coloring - surely we all like good coloring in our IDEs, but for a book I think it would be much more distracting to have multiple colors for code segments, not to mention - more expensive.
Regarding the bookbinding quality - whatever issues were present, they were likely solved, because my hardcover edition feels really sturdy and well put. I also like the paper - thin, semi-glossy, which enables this 1350 page book to be rather compact for the content inside.
Learning any computer language thoroughly requires wading through a lot of detail. If you only want to learn the gist of a language, buy another book. The book is enormous, which is good, because it is organised in a way that introduces the language in layers. Most novice programmers will probably leave the standard library reference material in the latter half of the book until they need to look something up.
Is it a book for novice programmers? It depends. It is not a book for someone that is learning to program, but for programmers wishing to learn C++, it is the undisputed authority.
The only one thing I can say that's bad about it is the paper is very thin and doesn't like to be written in or used with a highlighter; I've had to resort to sticky notes throughout the book to mark my own points of interest.
As all the other reviews have said, it's not the best book for a beginner, nor is it a reference to the language, but it covers all the core components that is easy to read and understand for an intermediate programmer.
Some confidence operating your new/updated compiler is an advantage to get it making sense of the book's examples.