Robotics is a mixture of things like mechanical engineering, electronics engineering and software engineering! Knowing C++ is a big head start in this area! Because I strongly believe that amongst all three engineering categories software is the one thing you will spend the most time on when developing an autonomous robot.
So to start, learn computer-aided design! So you can design mechanical components. I recommend Solidworks! There are also other software like Inventor and Creo that you can use.
The mechanical design component of building a robot will be a very iterative process, you can keep modifying your design until you are happy with it.
The best way to start off with electronics I think is to purchase an Arduino kit or a Raspberry Pi kit. Then follow along with tutorials that are online. Trust me there are heaps! This will help you understand how to program electronic components, and how to select them.
Then you will need a great deal of knowledge about electronics. How to select actuators, batteries, the right sensors and how to integrate all of them in the most effective way. You can learn about how to do these by posting on forums such as this, or doing some googling. So once you have a mechanical design, put together a simple block diagram of components. Once you have this, select the right components and draw up a simple wiring diagram. Once you have this, wire it up using a breadboard and test if the components work through an Arduino code or a python script on an RPi. Once you are more confident, start with a Vero board design. If you would like to be more advanced pickup a software like Eagle CAD and design your wiring as a Printed Circuit Board and send it off to China for low volume manufacture. Designing a PCB reduces so much wiring you will have to do and will reduce the amount of wasted space, also makes it easy to fault find.
Regarding the software or algorithms, I would recommend reading some research papers about the relevant topics you are interested in to understand the concepts. You can find these on google scholar or research gate. Another great platform to learn robotics is Peter Corke's Robot Academy. He goes through some of the most basic yet important and advanced robotics concepts and related mathematics.
Since you already know C++ I highly recommend using ROS. Within ROS you can model, and simulate your robot in RViz. You could write several scripts to simulate algorithms for Simultaneous Localisation and Mapping, Obstacle avoidance, A star path planning, etc. This will help you understand the algorithms quicker because you are actually practicing the concepts.
Here are some links to learn ROS that I have used in the past.
https://levi-armstrong.github.io/
http://docs.ros.org/kinetic/api/moveit_tutorials/html/index.html
Regarding hardware for autonomous robots:
These robots mainly require a mechanical design for steering, batteries, actuators and sensors. Learn more about the different kinds of steering mechanisms for mobile robots such as Ackermann Steering, Omni Directional Steering, Mechanum Wheeles steering, etc. This will help you with the mechanical design, given that you are planning to build a ground-based robot.
Then spend some time thinking about how the robot will sense the world it's in. This could be done by LIDARS, SONARS, IMUs, Encoders, Cameras, Stereo Cameras, etc. Once you have the sensing capability/capabilities chosen, you can select which exact algorithms to use.
Also, you might want to equip yourself with some tools such as a 3D Printer, hand tools, power tools, soldering iron, multimeter, and a benchtop power supply and perhaps a low-cost oscilloscope.
Hope all of this helps!