The World Wide Web
The web is an incredible resource for C++ Programmers. Here are some useful resources available on the web (this is by no means a complete list!)
http://pw1.netcom.com/~tjensen/ptr/pointers.htm — A Tutorial on Arrays and Pointers in C
The following is an attempt at a C++ bibliography. Given the pace of change in the C++ book publishing field, it cannot hope to claim that things are up to date, but it will at least give some idea of what is available.
The Major Books on C++
Here is a list of the books on C++, by the inventor of the language:
- The C++ Programming Language, Third Edition, Bjarne Stroustrup, Addison-Wesley, 1997.
This is the authoritative book on C++. There was a first edition, and a second edition, but they’re totally out of date now and pretty much useless, so buy the latest edition. This book is notorious for being very hard to read and understand. It is a very hard slog to read this book, and the density of information is extremely high. I strongly recommend that you find an easier way to learn the language from scratch than to learn it from this book, but if you want to become a C++ expert, eventually you probably should get a copy and read it thoroughly.
- The Annotated C++ Reference Manual, Margaret A. Ellis and Bjarne Stroustrup, Addison-Wesley, 1990.
The ‘ARM’ — the base document for the ANSI C++ committee. The annotations present in this (but not in The C++ Programming Language, Second Edition) are virtually indispensible for serious C++ programmers. This is a guide to some of the darkest corners of the C++ language. The C++ Programming Language is more up to date, but the annotations are worth your buying both. Unfortunately, this book is now more than 10 years old, and appears not to have been updated recently, which is a shame.
- The Design and Evolution of C++, Bjarne Stroustrup, Addison-Wesley, 1994.
This is a more recent book by the inventor of the C++ language. It discusses, in some detail, the history of the language, and why certain decisions were made about what features were included, why, and how (and also why other features were not included). The book adds useful insight for someone who already has a pretty good knowledge of C++. Unfortunately, it, too, appears not to have been updated recently, which is again a shame.
Here is a list of some of the other books I have come across on C++:
Note: This list is a little out of date. There are so many C++ books, that it’s virtually impossible to keep up to date with them all.
- C++ Primer, Stanley B. Lippman & Josée Lajoie, Addison-Wesley.
One of the most popular tutorial books on C++, by someone directly involved in the development of the AT&T Bell Labs C++ compiler (SBL), and someone who was heavily involved with the C++ standardization process (JL).
- Advanced C++: Programming Styles and Idioms, James O. Coplien, Addison-Wesley, 1992.
A highly acclaimed book on advanced C++ by another Bell Labs person. When it says ‘advanced’, it means it!
- Effective C++: 50 Specific Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 1992.
A recent, highly acclaimed book giving some very useful and practical advice on C++.
- C++ Strategies and Tactics, Robert B. Murray, Addison-Wesley, 1993
A very good book that discusses real-world implications and practices in the use of C++.
- C++ Programming Style, Tom Cargill, Addison-Wesley, 1992
A highly acclaimed book.
- Using C++, Bruce Eckel, Osborne/McGraw-Hill, 1989.
A popular tutorial on C++.
- Programming in C++, Stephen C. Dewhurst and Kathy T. Stark, Prentice-Hall, 1989.
Another popular tutorial on C++ from some Bell Labs people.
- The Waite Group’s C++ Primer Plus: Teach Yourself Object-Oriented Programming, Stephen Prata, Waite Group Press, 1991.
A very accessible, graphically interesting tutorial on C++.
- Object-Oriented Programming in C++, Naba Barkakati, SAMS/Macmillan, 1991.
This book does a better than average job of teaching C++ from a more object-oriented perspective, without covering a lot of C stuff first.
- Data Abstraction and Object-Oriented Programming in C++, Keith E. Gorlen, Sanford M. Orlow, Perry S. Plexico, Wiley, 1990.
A book that attempts to teach C++ with emphasis on how it implements software engineering ideas like data abstraction. It is written by the authors of the NIH (National Institutes of Health) class library. Unfortunately you tend to get overwhelmed with learning C++ and the NIH class library concepts simultaneously. Definitely worth some study, but probably not the best vehicle for learning C++ from scratch.
- Developing C++ Software, Russel Winder, Wiley, 1991.
A C++ tutorial with more emphasis than normal on abstraction, leading to good discussions of OO concepts.
- Teach Yourself C++, Al Stevens, MIS Press, 1990.
A very accessible tutorial on C++.
- C++: An Introduction for Experienced Programmers, Rex Jaeschke, CBM Books, 1993.
A book that attempts to bring the experienced C programmer up to speed on C++.
- Class Construction in C and C++: Object-Oriented Programming Fundamentals, Roger Sessions, Prentice-Hall, 1992.
A book that deals with C++ (and C) programming at a higher level than most, and offers practical advice on how to construct OO programs.
- C++ Programming and Fundamental Concepts, Arthur E. Anderson and William J. Heinze, Prentice-Hall, 1992.
A promising C++ tutorial.
- Turbo C++ DiskTutor, Second Edition, Greg Voss and Paul Chui, Osborne/ McGraw-Hill, 1991.
A useful object-oriented C++ tutorial with class library sources.
- Object-Oriented Programming with C++ and OSF/Motif, Douglas A. Young, Prentice-Hall, 1992.
A book that gives very good insight into how to use C++ features to approach Motif programming from an object-oriented perspective. Very useful, not only for implementing Motif applications, but also for understanding the tradeoffs and ideas involved in object-oriented design.
- Object-Oriented Program Design with Examples in C++, Mark Mullin, Addison-Wesley, 1989.
Quite a useful book, providing a practical approach to OO design, and examples using C++.
- C/C++ for Expert Systems, David Hu, MIS Press, 1989.
- Object-Oriented Environment in C++: A User-Friendly Interface, David Hu, MIS Press, 1990.
- User Interfaces in C++ and Object-Oriented Programming, Mark Goodwin, MIS Press, 1989.
- Turbo C++: A Self-Teaching Guide, Bryan Flamig, Wiley, 1991.
- Object-Oriented Programming with Turbo C++, Keith Weiskamp, Loren Heiny, Bryan Flamig, Wiley, 1991.
- Power Graphics using Turbo C++, Keith Weiskamp, Loren Heiny, Wiley, 1991.
- Learning C++, Tom Swan, SAMS/Macmillan, 1991.
- C++ For Programmers, Leendert Ammeral, Wiley, 1991.
- Reusability and Software Construction: C and C++, Jerry D Smith, Wiley, 1990.
Books on Object-Oriented Analysis, Design and Programming
Here is a list of some of the books on the more general topics of OOA, OOD and OOP:
- Object-Oriented Design with Applications, Grady Booch, Benjamin/Cummins, 1991.
A recent book that has received nothing short of rave reviews. Already a classic in the field of OOD, and a must-read for any serious OO programmer/designer.
- Object-Oriented Modelling and Design, James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy and William Lorensen, Prentice-Hall, 1991.
Highly acclaimed book from a group of workers at General Electric.
- Object-Oriented Analysis, Peter Coad and Edward Yourdon, Yourdon Press/ Prentice-Hall, 1990.
The first in the Coad/Yourdon series on OOA/D/P.
- Object-Oriented Design, Peter Coad and Edward Yourdon, Yourdon Press/ Prentice-Hall, 199?.
- Object-Oriented Programming, Peter Coad and Jill Nicola, Yourdon Press/ Prentice-Hall, 1993.
- Object-Oriented Information Systems: Planning and Implementation, David A. Taylor, Wiley, 1992.
High-level, useful discussion of the impact of OO systems oriented towards managers.
- Object-Oriented Programming: An Evolutionary Approach, Brad J. Cox, Addison-Wesley, 1987.
A classic book on OOP, which also discusses the Objective-C language, by its inventor.
- Object-Oriented Software Construction, Bertrand Meyer, Prentice-Hall, 1988.
A classic book on OOP, which also discusses the Eiffel language, by its inventor. Rather matehematical/theoretical, but authoritative and insightful.
- Object-Oriented Systems Analysis: Modelling the World in Data, Sally Schlaer and Stephen J. Mellor, Yourdon Press/Prentice-Hall, 1988.
The two books by Schaer and Mellor have been very influential in OOA/OOD.
- Object Lifecycles: Modelling the World in States, Sally Schlaer and Stephen J. Mellor, Yourdon Press/Prentice-Hall, 19??
- Designing Object-Oriented Software, Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener, Prentice-Hall, 1990.
A discussion of OOD with emphasis on ‘Responsibility-driven design’.
- Object Orientation: Concepts, Languages, Databases, User Interfaces, Setrag Khoshafian and Razmik Abnous, Wiley, 1990.
Broad-ranging and fairly deep discussion of many aspects of OO.
- Readings in Object-Oriented Database Systems, edited by Stanley B. Zdonik and David Maier, Morgan Kaufmann, 1990.
Even though it says ‘Readings in Object-Oriented Database Systems’, this collection contains many of the seminal papers on general object-orientation, so it is worth study even if you don’t think you care about OODBMSs.
- Software Engineering with Ada, Second Edition, Grady Booch, Benjamin/Cummins, 1987.
While not strictly on object-oriented programming, this book contains some of the best discussions of the principles of Software Engineering, and the motivations behind them. While the original Ada was not an object-oriented language, it is an object-based language, and the latest version of the Ada specification has added inheritance, which makes it an object-oriented language.
There are many journals and computer magazines that publish articles on C++, Object-Oriented Programming and related subjects. Here are some of them:
- The Journal of Object-Oriented Programming (no longer published; click here for an archive of articles)
- The C/C++ Users Journal, R&D Publications, Inc., 1601 W. 23rd St., Suite 200, Lawrence, Kansas 66046
- Dr Dobb’s Journal, Miller Freeman, Inc., 411 Borel Ave., San Mateo, California 94402-3522