A great book by
Bruce Eckel.
I first tried to learn C++ from some horrid textbook my high school gave me for a self study programming course. I don't know why it was called a C++ book... over half way through the thing it had failed to even introduce OOP or the STL. When I came to the section on pointers I closed the book and decided that was quite enough "C++" for me.
On my own time, I came across another of Mr. Eckel's books, Thinking in Java, that actually taught OOP as well. After finding out exactly how cross-platform JREs weren't, I gave up on Java, and went back to C++, with Thinking in C++. It was OH so much simpler that time around. :)
Available printed on dead trees, or free online at http://www.EckelObjects.com/books.html
See Also: Thinking in Java, C++, Programming