hello,
can not tell you just 'everything' needed to make software like the ones made by the organizations you named in question. I don't have decades of experience but in my opinion, its not just the languages that you need to know to make great software. You will also need
1).You will need to know data structures, algorithms, database and operating system also .
like somebody said
Algorithms + Data Structures = Programs [
^] ;)
2). Good design and architecture skills. These take time to acquire , no short-cut for this one.
3). a clear understanding of the problem you are trying to solve
4). a working knowledge of the engineering tools i.e. your hands-on skills with IDE, the libraries, the frameworks and whatever other technologies that you will be using.
This is not a final list but something you can start with.
Besides it would be helpful if you know a bit about the process that you will follow for making the software i.e Agile etc.
You can test your c/c++ skills by solving questions on sites like hackerrank, hackerearth or ProjectEuler.
You can start by making pet projects in languages/technologies you are interested in. Also you can browse through
Github[
^] projects to see what projects other people are doing in c/c++.
And coming back to your question; you can go through the
source code of Sumatra[
^] pdf reader to see how they use c/c++. There will be things you might not understand in the code then you can search for it on Google, because Googling is also a crucial skill.
hope this helps !!