tags:

views:

372

answers:

12

I am looking for some suggestions for resources (preferably books) for brushing up on C++. I taught myself C++ in highschool, and also took an OOP course in university that covered C++ again (as well as Smalltalk); however, I have been primarily a PHP and Ruby on Rails developer for the past 8+ years, and while I consider myself to be very strong with those languages, my C++ skills have slipped due to disuse.

I'm not looking for a beginner book, I know how C++ works syntactically. I am looking more for something that will give me a good start at getting into advanced aspects of the language. For instance, I have a good understanding of OOP principles, but could probably use a refresher for OOP within C++.

Does anyone have any suggestions for C++ resources for someone with a good base of knowledge that's looking to expand on it?

Update: Thank you very much for everyone's book suggestions! I'm not sure which answer to accept as I obviously haven't read any of the books yet, but I've got a nice list of books to start with now.

A: 

You can take a class at your local college, or perhaps get the C++ book by Stroustrup.

Daniel
A: 

Try this: http://homepage.mac.com/s_lott/books/oodesign.html#book-oodesign

It's biased toward Java and Python, but, you should be able to do all the exercises in C++ just as well.

S.Lott
+7  A: 

I've always liked Lippman et al's C++ Primer -- don't let the title fool you, it's going to "give you a good start on the advanced aspects" as you desire, it's quite thorough.

Alex Martelli
+1 Really a great book.
Lennart
+1 Agreed. Excellent read. A good combination of both explanation and reference.
DoxaLogos
+1 as well. I tell everyone "get this before Stroustrup". Probably makes me a heretic but what the hey...
Dan
No heresy -- language-design skill does not necessarily imply top writing and teaching skills... e.g., I mostly use a language designed by my good friend Guido, and it's a MUCH better language than if _I_ had designed it, but nevertheless -- I claim that I write better books and give better presentations than he does!-).
Alex Martelli
+14  A: 

I'd buy and read books like Effective C++ and More Effective C++. They're good at helping you learn more about C++ without spending too much time on the basic syntax.

Reed Copsey
+1 Required reading again and again...
DoxaLogos
+1 A C++ junk cleaner
siddhant3s
Slam dunk answer, but always the right one
Dan
+8  A: 

I don't normally recommend Stroustrup's "The C++ Programming Language" as a tutorial, but in your case I think it would be the right choice. I'd supplement it with Josuttis's "The C++ Standard Library".

anon
+1 another great book that combines tutorial and reference! A must have
DoxaLogos
+1  A: 

This may seem a little strange, but I also recommend Head First: Design Patterns The code in the book is Java, but you can easily do the exercises in C++ as I did. So, by doing the exercises in C++, you're exercising your C++ skills. I found it very helpful in getting a grasp on how Design Patterns work. The book is written in a very humorous and engaging way (unlike the seminal reference book:Design Patterns), and it helps you get a feel for patterns. I can't think of a more advanced topic than this, and it applies to all OOP languages.

DoxaLogos
If your going to the patterns route, I would also recommend James Coplein's classic, Advanced C++: Programming Styles and Idioms (http://www.amazon.com/Advanced-C-Programming-Styles-Idioms/dp/0201548550). This book pre-dates the GoF book and contains many of the source concepts that fueled the Design Patterns movement.
Jeff Leonard
I'll have to check that on out!
DoxaLogos
+5  A: 

Accelerated C++ is a good one IMHO.

Harper Shelby
Accelerated C++ is a great book. It does start from the very beginning, quickly jumps into the STL, and then gets into OOP and inheritance. I strongly recommend it.
AFoglia
+1  A: 

As well as Stroustrup's and Meyers' books mentioned in other answer, Design Patterns by Gamma et. al.: it's good for OOP within C++. Also, Refactoring by Fowler, which can be seen as a catalog of alternative OODs.

ChrisW
The questioner is already confident of his OO skills, and "Refactoring" is in Java. (Not that it isn't more widely applicable, but it isn't a C++ refresher.)
David Thornley
"Refactoring" is in Java? I'd forgotten that. Anyway, I was concentrating my answer on "could probably use a refresher for OOP" since other people had answered about C++. FWIW the first few books I read about C++ specifically were _Thinking on C++_ (how to read the syntax), _Effective C++_ (how to avoid shooting self in foot), _Design Patterns_ (examples of why you might *want* to use a programming language that supports OOP), and Stroustrup's (more details e.g. the STL).
ChrisW
+3  A: 

Bruce Eckel's books Thinking in C++ I and II there is also on-line version: http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

and C++ FAQs http://www.amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831

also I would recommend to study QT sources and docs.

SashaN
+1 for Cline's FAQs book.
Dan
+1 FAQs is a great C++ book. The related website http://www.parashift.com/c++-faq-lite/ contains material along the same lines, but the book goes into more detail.
markh44
+1 for FAQ. and Thinking in C++ isn't a brush up book, it consists of 1600 something pages in 2 volumes.
Comptrol
A: 

For an online reference C/C++:

Check out:

http://www.cprogramming.com/

There message board are good as well:

http://cboard.cprogramming.com/

Go to Deitel .com and have a whole listing of beneficially sites online..look on the left side...

http://www.deitel.com/ResourceCenters/Programming/C/tabid/224/Default.aspx

iwanttoprogram
+2  A: 

Anything by Herb Sutter will be at your level and help sharpen you.

For example, his C++ Coding Standards book, his first Exceptional C++ book and his second Exceptional C++ book, and his Exceptional C++ Style book.

Dewhurst's "C++ Gotchas" is damn good too, should be required reading for intermediate C++ users.

And just one more plug for Lippman's "C++ Primer" (4th edition) -- full of content, great layout, easy to bounce around, very well-written.

Dan
A: 

All the usual suspects have been hit up. I'd also check out

Essential C++ By Stanley B. Lippman

Also you can't go wrong with the C++ Programming Language, by Mr Stroustrup himself.

justinhj