Ivor Horton is self-employed in consultancy and writes programming tutorials. He started out as a mathematician, but shortly after graduating, he was lured into messing about with computers by a well-known manufacturer. Horton's experience at IBM includes programming in most languages (like assembler and high-level languages on a variety of machines), real-time programming, and designing and implementing real-time closed loop industrial control systems. He has extensive experience teaching programming to engineers and scientists (Fortran, PL/1, APL, etc.). Horton is an expert in mechanical, process, and electronic CAD systems; mechanical CAM systems; and DNC/CNC systems. He has spent many happy years programming occasionally useful applications in a variety of languages as well as teaching mainly scientists and engineers to do likewise. He has extensive experience in applying computers to problems in engineering design and to manufacturing operations in a wide range of industries. He is the author of a number of tutorial books on programming in C, C++, and Java. When not writing programming books or providing advice to others, he leads a life of leisure.
If you know some C++, then you'll find the first half of the book somehow boring. At least I did. Much more can be found equally, for free, on learncpp.com site - one of the best sites for beginners. The book has some meat in it, but by no means hard core Pro. Still, good practices are explained, some common patterns. I was bothered by that ridiculous statement: "This is too advanced for further ..." Such things just shouldn't be in the book, claiming to be for Pros. For instance, constexpr was not explained at all, also no threads were mentioned. Classes, move semantics, smart pointers and lambdas are well explained, though. If you want real pro stuff, check out Meyer's books (Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 and earlier editions). Be sure to go through learncpp.com before, at least. Otherwise, you'll find yourself in an alien world. Last, but not least, check out this free pearl: http://www.icce.rug.nl/documents/cplu... . I was really delighted to find this site. Some sections could probably be better explained, but that aside, it has a green light from me (as with Meyer's, here too, one has to have some C++ knowledge beforehand, to tackle it successfully). Good luck on your C++ journey ;)
A very good manual that actually teaches you how to write code from the beginning (bits, variables, bit manipulation, bases) up to concepts from object-oriented programming (classes, inheritance, polymorphism)