A Tour of C++ (Second edition)
is a quick (about 240 pages) tutorial overview of all of standard C++ (language and standard library) at a moderately high level for people who already know C++ or at least are experienced programmers.
It covers C++17 and a bit of C++20.
The C++ Programming Language (Fourth Edition) aka TC++PL4 is a completely rewritten and re-organized version of TC++PL3.
It describes the C++11 revision of ISO C++.
In particular, TC++PL4 reflects the massive increased of the standard library and the support for concurrency.
TC++PL4 aims at completeness in is description of the C++ language features, standard library components, and the programming and design techniques they support. See
have been extended, but are placed on the web to save trees and allow for explansion.
The discussion for software engineering issues found in TC++PL3
has been cut for lack of space.
I still recommend the discussion in TC++PL3.
Programming -- Principles and Practice Using C++.
is an introduction to programming for people who has never programmed before.
It will also be useful for people who have programmed a bit and want to improve
their style and technique.
It is designed for classroom use, but written with an eye on self study.
Drafts have been used as the basis for first programming classes at Texas A&M University (and elsewhere)
for sevel years now.
It is unrelated to the editions of The C++ Programming language.
The ``special edition'' of TC++PL is the hardbound version of the 3rd edition of TC++PL.
It contains two appendices more than the initial
printings of the 3rd edition and many minor improvements.
The ``extra'' appendices can be found on
my support pages for the 3rd edition
My 3rd edition is a complete C++ language and standard library tutorial for
It completely describes the C++ standard (ISO/IEC 14882) from the perspective
The third edition is a complete rewrite of the second edition.
More than 80% of the text is new compared to my 2nd edition.
D&E discusses why C++ is the way it is. It describes the
design of C++. The emphasis is on the overall design goals,
practical constraints, and people that shaped C++. It is not a
book trying to document every little detail of the language or
its use. The point of view in the discussion of C++ tends to be
that of a user (programmer or designer) rather that of a language
D&E should give you a much better appreciation of the way the
features of C++ fit together. It is my hope (and experience) that
understanding of such matters helps people write better programs,
but the book's primary aim is not on specific programming techniques.
My 2nd edition is a complete C++ tutorial for experienced programmers,
plus the C++ reference manual,
plus three chapters on design issues,
plus a chapter on ANSI/ISO resolutions.
The ANSI/ISO chapter is an attempt to address the problem of how to
keep a book completely up-to-date without messing about with its
content to the point where it becomes useless as a common point of
reference. The approach is feasible because the changes fit into the overall
pattern of the language.
By now, the 2nd edition is out-of-date and is unsuitable for learning C++ from.
Since it was published, the ISO C++ standard has been adopted and many new
design and programming techniques have become common (see my 3rd edition).
The ARM is the C++ reference manual annotated with information supposedly
of interest to language lawyers and implementers, plus a chapter on
Thanks to the good work of the ANSI/ISO committee, the ARM is now outdated.
The 1st edition of The C++ Programming Language introduced C++ to the world
and its publication coincided with the first commercial release of C++.
By now, it is of historical interest only.
Nobody in his right mind would try to learn C++ from it.