i'm a beginner c++ programmer . currently i'm reading c++ primer . I have been thinking that what might be the best way to learn c++ (by reading books or by practise) . Can i be a pro at it in 4 years .
I guess it sort of depends if you are new to programming as a whole, or are coming from another language (and if so what language). I find a good way to learn C++ (or any new language for that matter) is by first of all choosing a project or application that you would like to work on/create.
A small first project could be something like a console application implementation of a BMI calculator, which is what my lecturer at University told me to do in my first year. That way you can get writing code for a meaningful outcome rather than just doing some examples, which I personally find don't always teach you the 'why'. Also, you will be required to debug your code, which will help with the learning process.
If you are new to programming, you may also want to consider learning about Object Oriented or Functional programming.
Ultimately everybody learns in different ways and I suggest that you try a few different approaches until you find one you are most comfortable with. The things that helped me learn may not be as effective for anyone else.