I know three of them very well. I could use all of them efficiently. For cross-platform development, C++ is the the first priority, and Java is the second. C# is not a priority at the moment because it is not widely accepted and used in UNIX-based systems (Linux systems).
I personally like C# most because it has features I have always wished and looked for in C++, but C++ never bothered to implement them (a clear implementation of property and event as well as high-level array data type and a simple to use foreach loop).
C# is more like Java (C# supports all aspects of desktop Java), but has many more features. Many of these features are from C++ (like operaotor overloading which Java does not support).
C# in .Net 2008 and after supports Linq which has hard-wired SQL-like query statements in language (as native language statements). It's really amazing.
C# and Java codes look much nicer than C++. C++ is sometimes a real mess.
C++ does fully support object-oriented programming (OOP), but a programmer may choose to avoid that. In C# and Java, you are dealing with OOP from the very first piece of code.
C# will be the language of the future.