Extended Table of Contents.
Not in printed version.
I didn't think it was worth an extra 1000 lines.
Each chapter starts with its own table of contents.
Exercises.
Not in printed version.
I did not want to add another 80 pages to the book and I want to be able to add and change exercises over the years. The collection of exercises should be complete (if minimal) ASAP.
Concept code. I have so far failed to get my ``taylor made'' and stable version ready for posting, but see Andrew Sutton's Origin library on which the book's concepts are based.
If you are looking for a shorter and less complete introduction to C++, consider:
Bjarne Stroustrup:
A Tour of C++ (3rd Edition).
The ``tour'' is a quick (about 240 pages) tutorial overview of all of standard C++ at a moderately high level for people who already know C++ or at least are experienced programmers.
If you are looking for an
an introduction to programming for people who has never programmed before,
consider
Programming -- Principles and Practice Using C++.
That book is also be useful for people who have programmed a bit and want to improve
their style and technique - or to simply learn modern C++.
It is designed for classroom use, but written with an eye on self study.
Errata
Feel free to send me suggested errata.
I will fix every mistake that can be fixed within the constrains of the book.
I will post every errata that I think might impede understanding(eventually; I'm unfortunately way behind the printed books).
People have pointed out that the {} doesn't work for copy construction:
X x1 {2}; // construct from integer (assume suitable constructor)
X x2 {x1}; // copy construction: fails on GCC 4.8 and Clang 3.2
I know that. It's a bug in the standard. Fixed for C++14. For now use one of the traditional notations:
X x3(x1); // copy construction
X x4 = x1; // copy construction
Thanks to all who send me problems, correction, and clarifications:
Ron Avitzur,
Matt Austern,
Charles A. Barr,
Paul Bennett,
Thaddeus Black,
Andreas Boerner,
Keith Boruff,
A. Bresee,
Juerg Bruggermann
Ian Bruntlett,
Henry Buckley,
Vladimir Burenkov,
Peter Cordell,
Walter C. Daugherity,
Francios Degros,
Gabriel Dos Reis,
Robert Drehmel,
Yaakov Eisenberg,
James Feister,
Ted Felix,
William Fisher,
Paul Floyd,
Elazar Gershuni,
Douglas Gilbert,
Matt Ginsberg,
Raffaele Grosso,
Ben Hanson,
M. Harbeck,
Jack Harvard,
Craig Henderson,
Matthew Hielsberg,
Derek Hofmann,
Ashley Holman,
Niels Holst,
Zhiheng Huang,
Olaf Ippisch,
Dainis Jonitis,
Koehne Kai,
Zlatko Karaka�,
Tiemo Keller,
Brian Kernighan,
Hadeed Khalid,
Michael Kilpelainen,
Klaus-Werner Konrad,
Vlado Koval,
David Krishfield,
Daniel Kruegler,
Amali Praveena Soban Kumar,
Mantosh Kumar,
John Lakos,
Wanying Luo,
Chintan Maggu,
Jaydeep Marathe,
Bruno Marques,
Brono Martinez,
Randy Merkel,
Martin Moene,
Thiemo Nagel,
Tyson Nottingham,
Toshiaki Ohkuma,
Peter Olsen,
Aidas Ozelis,
Laszlo Papp,
Nathan Panike,
Dale Lukas Peterson,
Marcelo Pinto,
Timur Pocheptsov,
Michael Price,
Tim Prebble,
Andrea Proli,
Luca Risolia,
Dan Rose,
Ambitabha Roy,
Jens R�mer
Rohit Santhanam,
Anubhav Saxena,
Ian Scott,
Richard Shepherd,
Eric Sirko,
Abe Skolnik,
Edward M. Smith-Rowland,
Marcin, Sobieszczanski,
Soren Soe,
Dean Stanton,
Igor Stauder,
Daniel Suen,
Andrew Sutton,
Edward M. Taffel,
David A. Thomas,
Felix Voigtlander,
Alexey Voytenko,
Johan Williamsson,
Aaron Wong,
Scott Wright,
Guilliam Xavier,
Geffrey Yerem,
Muhammad Zahalqa,
Alexei Zakharov.
Apologies if I missed a name.
Some might find it reassuring that many (most?) problems were spotted by several people.
June 17, 2013: The Meglomaniac Bore Blog entry.
``you can learn something new nearly every other page - even as a seasoned C++ developer I was still updating my knowledge.''
Amazon. Please ignore the stars and focus on the comments that convey information.
Note that several comments were made before
hardcover and
electronic
versions were available.
References to my books are posted in many places, such as
amazon.
Naturally, a variety of people comment.
The comments vary in their level of sophistication, degree of insight, and level of professionalism.
For the many insightful and polite comments: Thanks!
It is not possible for an author to comment on every mistake, misunderstanding, and misreprenstation in these ``reviews.''
Instead, here are a few responses to comments that I happen to disagree with or find potentially misleading:
The book is too big.
I agree, but some book must cover essentially all of C++, and this is that book.
If you can make do with less, please do, but I feel obliged to aim for completeness.
This book is close to complete from a programmer's point of view.
Language laywers need the standard, but this book is a good place to start even for those.
Like the standard, this book covers the C++ language and the ISO C++ standard library.
C++ is a lousy language so don't read this book.
C++ may not be your favorite language, but that does not make this book bad. It may be (and in my opinion most likely is) a good book about a language you happen to dislike.
I do not believe in trying to hide blemishes.
I probably know more of the problems with C++ than just about anyone, and I also know how to compensate for them.
If you are a serious C++ programmer, this book contains much of interest.
If you are not a C++ programmer and don't aim to become one, why comment on this book?
There is no table of contents.
Yes there is, it is
on the web
to save a few trees.
Apart from that, the table of contents in the print version covers the first level of contents and each chapter starts with a chapter table of contents that covers the next level.
I personally prefer that to a huge, detailed table of contents.
There are no exercises.
Yes there is, they are
on the web
to save a few trees.
All you need is C (or Python or Java or Haskell or ...).
Maybe for what you do right now, that is true.
If so, don't read this book.
However, I happen to believe that you cannot be a professional in the technical side of the computing business knowing just one programming language (even if that language is C++).
This book is not a polemic, but if you are interested, you can find discussions of the design criteria for C++, the evolution of C++, and the areas of use of C++ in the Notes to the Reader chapter.
C/C++ compatibility has its own chapter.
This is just a bunch of quotes from the C++ ISO Standard.
If you say that, you have either not read the standard, not read the book, or neither.
The standard focuses on requirements for implementers
and is written in a highly specialized style.
This book concentrates on what facilities are offered to programmers and how they can be used in programs.
These are radically different points of view, but
obviously, there is an overlap. I even try to make that overlap obvious by references to the standard.
Also, when the wording is similar, I might be paraphrasing the standard, but at least as often the standard is a more precise statement of my original text.
This is not a good book for beginers.
You are right!
This book is written assuming that the reader is a programmer. It says so prominently and explicitly (at least five times).
For beginners, I recommend
Programming -- Principles and Practice Using C++.
That book is also useful for people who have programmed a bit and want to improve
their style and technique - or simply to learn modern C++.
It is designed for classroom use, but written with an eye on self study.
This book is badly organized.
Maybe, and maybe it is just not organized the way your previous book was organized. For example,
it does not present topics in a strictly-bottom-up fashion (you don't use a language that way).
It does not present the language in a familiar-topics-first fashion (topics are presented where they logically belong independently of year of introduction into C++).
It does not present topics in an easiest-to-understand-fist fashion.
It assumes some maturity of the reader.
It is not a pure manual. Of course, but even a good programmer is unlikely to learn the major programmming techniques from just a manual. If you really want ``just a manual'' try the ISO C++ Standard -- few people will find that enlightening as an introduction to C++ or as an introduction to C++11.
It is not free of opinion.
It explicitly reflects my view of how C++ can be used well.
Read
The preface
before complaining.
The book is up front about what it is and what it is not.
Maybe it is simply not the book you are looking for.
It's full of bugs
It is a thick book, dense with information, addressing nontrivial topics. So, there are bugs.
Few affects understanding, and they will all be fixed and the ones I think might impede understanding will be
documented.
If you can't accept any bugs,
stick to thinner books avoiding advanced topics,
and don't push the boat out to demonstrate novel programming styles taking advantage of C++11 features.
There are two forms of ``bugs'':
Genuine errors, such as missing a semicolon after an expression to make it into a statement or a misspelled identifier.
These, I feel bad about and fix ASAP.
``Errors'' causing compiler error messages because of compiler bugs or (more frequently) because the compiler isn't yet C++11 complient.
These are inevitable because of my policy of using C++11 as it was meant to be used, rather than conservatively using only features widely supported. An example is my near-universal use of {}-lists for initialization.
Such ``bugs'' is the price we pay for a book aimed at the future rather than the past.
I have no plans to modify the book to support pre-standard compilers. Assuming you are a professional programmer, you already know how to adjust your code to achieve that.
An added reason for using ``advanced features'' is to put a gentle pressue on implementers (and especially on their managers).
The support is lousy!
You bought a 1300+ page (480K+ word) book for $40 or $60, not a subscription service.
How much support do you expect? I'm an individual who does my level best to update information related to my books in my copious spare time. You can easily pay three times as much for a third of the information found in TC++PL4. If you have chosen to pay that, maybe you'll have a complaint to make to the organization that sold you the service.
I don't like the paper, type face, or binding, so this is a bad book.
No, if you are right, it is more likely to be a good book in a form you do not like.
It is not possible to please everybody with a single format (paper or electronic).
Something more solid would add to weight and price, and some would not like that, so tradeoffs become necessary.
However, I do think that the softcover is a rather pleasent one, offered at a remarkably low price for its size, quality of binding, amount of information, and quality of contents.
Furthermore, Addison-Wesley is listening:
Your grammar is wrong!
Sometimes, you are right about that.
English is not my native language.
However, there is no one universally agreed standard for English grammar.
I have followed the advice of my (native English speakers) copy editior and proof reader, who (as far as I can tell) follow
The Chicago Manual of Style.
This may not be your favorite style (in cases, it is not my favorite either), but it gives a high degree of consistency.
Constructive comments and reports of errors are always welcome.