Design patterns : elements of reusable object-oriented software
A great book for design patterns, but it is advanced and hard to read.
It is recommended as a follow up once you know the basics and if you want to become expert to C++.
However, if you are not interested in C++, you may skip this.