C++ Programming References
There are a large number of books available for C++
programmers of all levels. I've looked at a signficant
number of texts for my
Introduction to C++ Programming class at the
Johns Hopkins University,
as well as books written for the advanced programmer.
I offer the following recommendations for books and on-line resources
that may be useful to C++ programmers.
Books / Papers | On-line resources |
|
|
Suggestions:
Serious students: For someone who is going to do some
signficant C++ programming I would suggest getting a good
introductory text (Lippman/Lajoie, Deitel and Deitel, or
Horstmann) and Effective C++.
In addition, professional programmers will also want a
language reference like Stroustrup 3rd edition and perhaps
another book on STL (like "STL Primer" or "STL for C++ Programmers").
Introductory Texts
-
H.M. Deitel and P.J. Deitel,
C++: How to Program, 2nd ed., Prentice Hall,
1998. The second edition is even better than the
first; although it is an introductory book it includes a
treatment of the Standard Library. This is also a book I
considered using in 605.201 but I was afraid it might be too
advanced for students with no programming background. Average
professional programmers who want to learn C++ will love it.
(Strong professional programmers are probably better off with "C++
Primer").
- Frank
L. Friedman and Elliot B. Koffman,
Problem Solving, Abstraction, and Design Using C++ (2nd edition),
Addison Wesley, 1996.
This is a text I have used in 605.201. While it does cover the
basics of the language, it does not go into enough depth
in many areas. (It is weak on inheritance and polymorphism,
dynamic memory allocation)
Intermediate Texts
- Stan Lippman, Josee Lajoie,
C++ Primer, (3rd edition), Addison Wesley, 1998.
This was one of the first C++ books I read (while in the 2nd
edition), and I still consider it quite good. Since I work
in information retrieval, I expecially appreciate their
examples of using the STL data structures and algorithms
for indexing and retrieval text.
-
Cay Horstmann,
Computing Concepts with C++ Essentials,
John Wiley, 1997. This is another book I considered for 605.201
but I didn't like the fact that it elegantly avoided a treatment
of pointers and arrays by using the new Standard Template Libarary.
Students may love it for this, but I think it is a good
idea to work through the details about pointers.
- Horstmann has also written a short book which is designed
for C and Pascal programmers who want to learn the
specifics of C++, but who aren't entirely new to programming
Mastering C++: An Introduction to C++ and Object-Oriented
Programming for C and Pascal Programmers, John Wiley & Sons, 1996.
Reference Books
-
The C++ Programming Language, (3rd edition),
Addision Wesley, 1997.
The long-awaited 3rd edition of Stroustrup's, C++ Programming
Language is now in print.
It appears to be signficantly more readable than the
2nd edition (e.g. contains style
suggestions and exercises) and includes important
material missing from the 2nd edition that is in the
ISO Draft Standard.
- Margaret A. Ellis and Bjarne Stroupstrup,
The Annotated Reference Manual, Addision Wesley, 1990.
This is a much better read than The C++ Programming Language
2nd edition but is now a bit dated. One strength of this
book is that it attempts to provide insight into how various
features in the language might be implemented. Ofter referred
to as the ARM. Andrew Koenig and Bjarne Stroustrup are reported
to be working on an updated version (ie. an annotated reference
manual for ISO C++) which we can only wait for expectantly.
- Brian W. Kernighan and Dennis M. Ritchie,
The C Programming Language, (2nd edition),
Prentice Hall, 1988.
This book is the classic reference book for ANSI C,
and although often sparse with details, does
describe the language and standard libraries.
Referred to as "K&R" from the author's last names.
- Samuel P. Harbison and Guy L. Steele,
C: A Reference Manual,
Prentice Hall, 1991. Perhaps a better written reference
than K&R.
- Steve Teale, C++ IOStreams Handbook, Addison Wesley, 1993. This
reference covers all anyone needs to know about input and
output in C++ using the streams in "iostream.h" and "fstream.h"
- Bjarne Stroustrup,
The Design and Evolution of C++, Addision
Wesley, 1994. This book is historical rather than technical
and much of it reads like (and is in fact based on in part) a
paper given by Stroustrup at a ACM History of Programming
Languages (HOPL II) conference, titled, "The History of
C++".
- P. J. Plauger,
The Draft Standard C++ Library, Prentice Hall,
1995. A book that introduces, explains, and even provides
source code for the standard libraries. Predates STL.
Advanced Books for Professional Programmers
-
Scott Meyers,
Effective C++: 50 Specific Ways to Improve Your
Programs and Designs (2nd edition),
Addison Wesley, 1996. It is hard to be too complimentary about
this book. It is exceptional and is a superb companion for the
C++ student / practitioner. Most of the issues are
related to the object-oriented features of C++ as opposed to
the fundamental syntax and control structures of the language.
This edition of the book revises the first (1992) version.
-
Scott Meyers,
More Effective C++: 35 New Ways to Improve Your
Programs and Designs, Addison Wesley, 1996. Quite excellent
but not as earth-shattering as the first book.
-
Andrew Koenig and Barbara Moo, Ruminations on C++.
The book is really a collection of articles by Koenig, many
from the Journal of Object-Oriented Programming.
- James Coplien,
Advanced C++: Programming Styles and Idioms,
Addison Wesley, 1992. This is an older book, that has several
very good ideas and probably influenced the mid-90s trend/fad
towards design patterns.
- Graham Glass and Brett Schuchert, The STL Primer, Prentice Hall,
1996. This was one of the first books on STL and it remains one
of the better ones.
- Leen Ammeraal, STL for C++ Programmers, John Wiley & Sons, 1997.
This excellent book is a fine alternative to STL Primer.
- David Musser and Atul Saini, STL Tutorial and Reference Guide,
Addison Wesley, 1996. Although you would expect excellent
things from a book by one of the authors of the first STL
implementation, that wasn't my experience. I wouldn't recommend
it, it reads too much like a reference guide as opposed to a
book that will teach you STL.
- Mark Nelson, C++ Programmers Guide to the Standard Template
Library, IDG Books, 1995. To be avoided.
Miscellaneous C/C++ and Object-Oriented Books
-
Brian Kernighan and Bob Pike, The Practice of Programming,
Addison Wesley, 1999.
This book is intended for programmers with some experience under
their belt who want to learn how to recognize and write
good programs. Its a book about style,
readability, efficient debugging, effective use of data
structures, writing robust and maintainable code, planning for
portability, ...., you get the idea
- Andrew Koenig, C Traps and Pitfalls. A fun book that helps you
learn some tricky points in the C language in a lighthearted way.
- John Barton and Lee Nackman,
Scientific and Engineering C++:
An Introduction with Advanced Techniques and Examples,
Addison Wesley, 1994. Think of it as C++ with Math.
- William H. Press, Saul A. Teukoisky, William T. Vetterling, and
Brian P. Flannery,
Numerical Recipes in C: The Art of Scientific Computing (2nd ed),
Cambridge University Press, 1992. A numerical analysis book
with many commonly used functions implemented in C code. The
implementations are designed to both (a) produce good results,
and (b) run efficiently.
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides,
Design Patterns: Elements of Resuable Object-Oriented
Software, Addison Wesley, 1995. Often called the Gang of
Four or abbreviated "GHJV" for obvious reasons.
Notable Papers
- Thomas M. Breuel, Lexical Closures for C++,
USENIX C++ Conference, 1992.
- Andrew Koenig, Function objects, templates, and
inheritance, Journal of Object-Oriented Programming,
September 1995.
- Andrew Koenig, Function Adaptors, Journal of
Object-Oriented Programming, January 1996.
- Konstantin Laufer, A Framework for Higher-Order
Functions in C++, 1995.
- Bjarne Stroustrup, An Extensible I/O Facility for
C++, (Proceedings of an USENIX C++ Conference??),
1985.
- Bjarne Stroupstrup, An Overview of C++, ACM SIGPLAN
Notices, 21(10), 1986.
- Bjarne Stroustrup, Run-Time Type Identification for
C++ (Revised), USENIX C++ Conference, 1992(?).
- Bjarne Stroustrup, A History of C++: 1979 - 1991,
ACM SIGPLAN Notices, 28(3), 1993.
On-line C++ resources
Journals and Magazines
- The home page for the
C++ Report, one of the better trade magazines for C++
programmers.
- The home page for the
C/C++ User's Journal, another magazine for C++
programmers.
- The
Journal of Object-Oriented Programming is one of the
best periodicals for O-O professionals, and while it
features C++ prominently it is more theoretical and
stylistic in nature than other C++ specific trade
magazines.
- The home page for the
Dr. Dobbs Journal, another magazine for programmers
with emphasis on PC users and C and C++.
Some Publishers of C++ books
C++ Related Technical Conferences
Paul McNamee
Last updated: April 27, 1999