I can't believe that no one is asking what foundational knowledge we're trying to layer C/C++ on top of. (actually, I can't believe that no one is asking why the heck you feel you need C++ in the first place).
There are a few hurdles in C++ development: embracing real object orientation, dealing with pointers, and memory management.
If you've got an OO background from a language like java, or C#, then you might have this covered already. If not, I would suggest first learning one of these, because you'll get an understanding of OO without having to deal with that other hard stuff. Also, their syntax is an evolution of C++ (which is, of course, and evolution of C) so much of what you learn will be directly applicable. These languages also don't offer honeypots of unnecessary complexity like multiple inheritance or (as much) operator overloading, so you'll stay out of bad habits.
Once you've got the OO thing, I would suggest first wading into plain old C to get an understanding of pointers and basic memory management. I started learning C with the classic K&R - the nice, thin, well-written "The C Programming Language" by Brian Kernighan and Dennis Ritchie.
Then layer the C++ on top of that, getting the patterns of C++ memory management (with destructors, structured exception handling, etc.). I'm not sure where to tell you to go for a reference on this. I can tell you that what I did was wrong: if you just pick up Stroustrup's "C++ Annotated Reference Manual" (aka "The ARM") like I did (because that's the kind of reference I was used to for C), you'll immediately get lost.