I recently finished Effective C++. This was a great book. This book lead me to the realization of the beauty of header files, and the elegance of the differentiation of interface and implementation. There are also some great topics which cover the idea of turning all of a classes attributes to functions, ie Number.int() instead of Number.int. By using this approach, you have an interface between the client and the attribute, which allows modification, if needed, without effecting the API.

I would highly recommend this book to any software engineer who is interested about C++, encapsulation, or object oriented programming. This would pair well with Clean Code, though that book focuses on Java, the concepts translate across any object oriented design approach.