Because I started a project in C++ and had not a lot of knowledges about this language, I bought some books and just finished the first : Accelerated C++, written by Andrew Koenig and Barbara E. Moo
This book, as its name indicates, will not tell you anything about C++. It will teach you everything you need to know when starting developing applications in C++. As the authors said :
you need to know everything in this book - even tough this book doesn't tell you everything you need to know
This book is a really good book for people wanting to learn C++ quickly having knowledge in another language. It's not a good book if it's you first programming language, it will not tell you how to write a if/else statement.
This book takes a practical approach. For every notion you'll learn in the book, you practice it using some examples, improved chapter after chapter. Each chapter is also finished with a set of exercises that you can solve if you want to practice directly. In every chapter, you'll learn how to use the standard library utilities to makes coding easier, it's a really good point.
You'll start working with strings in a simple example project, then improve the project using the STL containers and algorithms. The sequential and the associative containers are studied. After using the generic functions from the STL, you'll write your own generic functions using templates. Once you got the basis, the authors teach you how to define your own types. You will then learn how to manage memory, More than defining types, you also will be able to write abstract types and use inheritance to solve problems. The authors will also show you a way to manage memory (almost) automatically using handles (smart pointers). And finally, you will revisit the first example improving it by using everything you learned so far.
To conclude, I have to say that this book is really a good one and I recommend it for every developer that want to switch from another language to C++