IMO, the clang compiler from llvm is one of the best freely available compilers - it has nice easy to understand error messages. clang++ depends on the gcc compiler, so you will need to get that as well. These can all work with various OS.
There are lots of IDE's as well - QtCreator, CodeBlocks, Eclipse just to name a few, and they work with various OS too. I sometimes use KDevelop on Linux, as it can work with over 60 different languages / scripts, provide one has a compiler / interpreter for the respective language / script.
While you are at it consider trying out a LInux OS. There is so much stuff that comes with it, and it is well worth it for anyone doing CS. Ubuntu is popular as it is easy for people migrating from Windows.