Stanley B. Lippman and Josee Lajoie, "C++ Primer" (3rd Edition).
Addison-Wesley, 1998. ISBN: 0-201-82470-1.
Kayshav Dattatri, "C++: Effective Object-Oriented Software Construction: Concepts,
Principles, Industrial Strategies, and Practices".
Prentice Hall, 1997. ISBN: 0-13-104118-5.
This book is good provided that you are fluent with C++ and it emphasizes more on the design,
programming techniques, and why C++ is designed as it is now.
Bjarne Stroustrup, "The C++ Programming Language" (3rd Edition).
Addison-Wesley, 1997. ISBN: 0-201-88954-4.
This book (by the designer of C++) is a must-have for every serious C++ programmer.
Margaret A. Ellis, Bjarne Stroustrup, "The Annotated C++ Reference Manual".
Addison-Wesley, 1995. ISBN: 0-201-51459-1.
This is not a book for learning C++, but rather for looking up detailed information, with examples
and explanation. A new edition of the book (covering the ANSI standard) is expected at the end of
Matthew H. Austern, "Generic Programming and the STL: Using and Extending the C++
Standard Template Library".
Addison-Wesley, 1999. ISBN: 0-201-30956-4.
This book explains the central ideas underlying generic programming and shows how these ideas
lead to the fundamental concepts of the STL: iterators, containers, and function objects.
Scott Meyers, "Effective C++ "(2nd Edition).
Addison-Wesley, 1998. ISBN: 0-201-92488-9.
A very good book, aimed at programmers that already know C++ but want to become better
programmers. You should be able to read most of it after you completed COMP151.
Scott Meyers, "More Effective C++".
Addison-Wesley, 1996. ISBN: 0-201-63371-X.
A follow-up to Effective C++; equally good.
Gamma et al., "Design Patterns -- Elements of Reusable Object-Oriented Software".
Addison-Wesley, 1995. ISBN: 0-201-63361-2.
This book is aimed at proficient C++ programmers, and covers Object-Oriented design techniques.