C++ is just a language, just like HTML, Java, or Visual Basic.
The things that you want to learn are not C++, but game programming concepts.
I believe gamedev has a forum of people who can explain many concepts that you
would like to understand, including many articles of how to do things like collision
detection and such.
When it comes to game design, the language is a don't-care, because no matter
what language you program in, your biggest issues will be getting the libraries for
getting things done, like game engines, text processing, physics, drawing, loading and manipulating resources, and so on.
This is even more significant to understand because many of the current games are more worried about managing resources, maintaining modularity, and making sure you can fix bugs when they come up, rather than going "oh, why should I store 1 in an integer when I can store it in the first bit of a character to save space?".
In summary, you should focus more on what you really want to accomplish, resources needed such as text processing, game engines, and so on, and getting used to putting them together in a modular way without particularly making your code unmanageable while not knowing anything about the libraries outside of their general theories and assertions, and standard terminology.
Overall, you will learn far more by copying programs and getting them to actually compile, then building onto that knowledge, rather than learning everything all at once. This does not mean you will not come into situations when language itself does things you have not learnt about, and cannot combat it. Therefore you should have a good experience with language before doing things like this, or use a more high level language such as java which will immediatly notify you in most cases when you do something that you did not intend to do...
Hopefully this helped.