Several people have mentioned this, but all the software I use on a regular basis is written in C++, and I can’t imagine what it would be like if they were written in some .NET language or Java or worse.
Firefox, Thunderbird, all the video games I play, music and video players, word processor, spreadsheet, audio recorder, Visual C++ Express, VS 2003, etc.
I could go on, but most of these applications task my processor, and would not be as snappy or responsive if written in anything other than C++. For awhile I was using Paint.NET, but it’s slow, and I get annoyed with that, so I don’t use it. Azureus, the Java bittorrent client, can’t hold a candle to the C+±based candidates.
I program video games. There’s no question about what language I use for that. Most next-gen consoles are faster than desktop computers, and those games will all be written in C++. Microsoft is pushing the XNA/C# thing for the XBOX 360, which is fine for hobbyists, but commercial game programmers know they can’t use a runtime that freezes all threads to do extensive garbage collection and memory compacting for longer than 20 milliseconds. It kills the frame rate.
I estimate 98% of the time I am interacting with a computer, the software I am using was written in C++ and this is probably true for most people. So, how is the importance of C++ diminished?
How well does C++ protect me from myself? Well, I don’t aim at my feet, so I rarely shoot them. In other words, when I instantiate objects on the heap, I allow smart pointers or STL containers to keep track of them and deal with memory management. I’ve worked on C# projects that need weird hacks to keep the runtime from freeing memory that is still being used. The .NET runtime with go ahead blow your leg off for you.