C# is a Microsoft product, and only really runs on Windows. C++ is applicable to every platform. Since the majority of web and database servers in the world do not run Microsoft operating systems, it only makes sense to learn C++. Try your best to stay away from the "Visual" part of C++, which is also Microsoft-specific.
what about physics students? can C# cover their needs?
Python can do complex numbers and, while I'm still learning about it, it seems like the development time is much lower than c++. And python runs on pretty much any system out there, so it's very portable.
I don't really know too much about how much code a typical physics student really needs...
Wouldn't a math package like Maple or Matlab be better suited for most physics students? Not that there is anything wrong with writting your own code for solving a problem...
For complex and time consuming computer calculations, I would advise against Python as its memory management system is not as advanced as C++ although there is a patch which significantly reduces Python's memory consumption.
C++ does not have a memory management system, sid_galt. When using Python's built-in algorithms and data structures, performance can be neck-and-neck with C++.