I think it is good to better understand the bitcoin protocol because it has a very hands-on approach with exercises in Python that will make you understand a lot of the bitcoin internals.
But to understand the bitcoin-Qt client I don't think it is ideal.
For me the ideal book would be one that leveraged your C++ while teaching you to understand a simplified version of a bitcoin client in C++ with a lot of diagrams.
I am a visual learner so I have difficulty understanding things like STL map and multimap containers without diagrams.
My C++ is good enough to understand 95% of a C++ video tutorial like this one:
https://www.youtube.com/watch?v=Rub-JsjMhWYBut still I expect a book to help me with C++ for better understanding of the bitcoin clients code.
Because it gets really difficult without diagrams, comments, C++ leverage and visual roadmap to get to grips with the clients' code.
I give Mastering Bitcoin five starts, though. It is very helpful and sheds a lot of help on the subject.
Much more is necessary. But is good achievement, and may help others come up with more good stuff.