Well, why not? Why do some people use C++ on Windows rather than Linux? They're both fairly well established operating systems, so why not use them?
Personally, I use Linux because I think the Linux kernel is better at certain things, I like free/open-source software and think that it's important, I think Linux is very convenient for programming (most of the tools you need already exist) and thoughpeople often complain about installing software on Linux, but I've never had an issue with it. I also like GNOME and KDE, and while you can actually build KDE on Windows, I find Windows a hassle to use at times. It seems to get in the way alot. Also, on Linux, if you're willing to learn some commands and how to edit some text files (which, unfortunately, don't seem to be very uniform (which is to say, the syntax for various configuration files is too different)) you can change literally anything you want.
I also use Windows. Windows, despite claims, is rather stable (Linux systems tend to be more stable; I put this down to Linux having been designed from a top-down perspective, whereas the Windows kernel seems to have had a multitude of layers slapped on at different times. I'd put that down to the development model. Windows development is controlled by businessmen who don't understand programming or how to manage programmers, whereas the development of Linux is controlled by the programmers that write it), very easy to use (although admittedly, like I said, I find it gets in the way some times), attractive.
But there's no point comparing the two, because they aren't even made for the same purpose. Cars and bicycles are both vehicles, but you wouldn't say "Cars are better than bicycles!". Linux is made for the sake of making it. The developers want to make the best kernel they can make, and no-one really cares what happens as a side effect of that (this is what I like so much about the open source development model. Windows is made for a different purpose: to make money for Microsoft. And that's ok. Saying one is better than the other isn't really fair; it's like saying humans are better than sharks.
Anyway, I like using Linux and I know a lot of other people do, too; I also find Linux more convenient to program on. And that is why some people use C++ on Linux rather than Windows.
The package managers allow for quick installation of all kinds of libraries, with automatic installation and setup of precompiled binaries, headers and debug builds. If you had to get a large library including dependencies working before on Windows, you'll appreciate that. And then there are some great tools like valgrind and some other things that are nice for a developer to have, such as FUSE and easy direct device access.
If you need to develop applications for Windows, you can still do that thanks to MinGW + Wine.
A big difference is that Windows has a spaghetti kernel. Whereas Linux has a well-written C kernel. Furthermore, it's all a matter of taste on which platform you choose, anything of the standard C++ can be done on both, the only differences are the OS dependent stuff. Windows has cluttered updates that have strange deeper-lying dependencies which hold it together like the tower of Pisa. While Linux uses .. well, I said that already.
The main advantage of writing on Linux is because the kernel is in C and you can thus easily implement functions and classes from it.
The main advantage of writing on Windows is because it's widely used.
As you may have noticed I'm a bigger fan of C++ on Linux than on Windows, but I tend to release something for both whenever I do.
yeah, i totally get that. linux is free, windows isn't ... that`s the way it is. of course they have different strategies. i'm sorry if i came a little strong, i'm not against linux or sth, i'm not pro windows either, they all have their ups and downs and it just depends on what suits you in a specific task.
so, as far as i understood, the OS choice does not have anything to do with the actual programming, right ? just with the libraries you install and such.
Well, there ARE some difference when it comes to functionality, Windows has a few libraries (like windows.h and winuser.h), with a whole website dedicated to it's functionality (www.msdn.com), while Linux uses open-source libraries that can be loaded separately to give more functionality. The same can be said of Mac and other OS's. Try not to delve into anything that's too much Linux or too much Windows, unless you specifically want to produce for a single OS.
The developers want to make the best kernel they can make, and no-one really cares what happens as a side effect of that
The result is a total mess and bloat (according to Linus Torvalds). :D
Another result is that many hardware manufacturers do not like making drivers for Linux, because the kernel API changes every 2-3 minor releases and Linux lacks proper ABI. So the "community" tries to create its own open-source drivers, which makes that we have still no good NVidia or ATI 3D acceleration (however, the closed source drivers from NVidia and ATI do work in this case, at least).
Admittedly, that's probably true. But the best designed kernel I know of, that of MINIX 3, is slightly featureless (because being feature-rich is not what it's designed for). Maybe I'll take it, learn how it works (it's only ~5 kLOC) and add to it.
The driving reason for me is that Linux is free and Windows costs money, and any third party
libraries I need (and that are any good) will most likely be free for Linux and cost more money
for Windows.
Regarding programming, I couldn't care less what the architecture of the kernel is as long as it
is stable.
I mainly prefer Linux for development because of the CLI. It's more familiar and more powerful. I use grep, find, sed, vi, ln, diff, perl, and other basic file manipulation tools habitually.
AFAIK windows explorer is written c++ as far back as win32 has been active. I think they switched to it once the second or third stable release of the MFC was written.