Predictable Application Development
One of the really nice things about C and C++ is that they're predictable. It's easy to find out what the code is doing; you can step through the code in a debugger without having to worry what the runtime interpreter is doing "under the covers." This is why a lot of real-time and embedded code is still written in the more traditional languages such as C and Adabecause developers can predict how long routines will take to execute.
Most of the code libraries for C and C++ were written by developers who understand this need for predictability. Indeed, most libraries actually ship with the source code. This gives C and C++ developers many of the advantages of Open Source development, because many eyes have looked at the implementation of the libraries. This in turn makes development more predictable, because there are fewer hidden "gotchas" in the libraries, and it's rare for libraries to interact in unforeseen ways. This is in marked contrast to the Visual Basic world, where most of the reusable code is sealed away in precompiled DLLs. These DLLs often interact in unforeseen ways, so much so that the term DLL Hell has been used by many teams to describe the subtle interactions between the libraries.
Java treads the middle ground here, since the source for the standard JDK class libraries is available for any developer to read and review. On the other hand, many of the add-on class libraries for Java development environments don't come with source code. Java also has its own version of DLL Hellthe CLASSPATH. Getting the ordering on the CLASSPATH just right has hassled more than a few developers.