Managed languages like C#/Java have to convert MSIL/Java Bytecode (which is what C#/Java compilers create) into machine code at runtime. This can slow down the initial startup up of the application (using something like NGEN can overcome this though). Not only that but both languages use a garbage collector to pick up and delete unused objects as well - which also uses process time.
C++ does not do this and is always compiled to machine code before use. No garbage collector exists in C++. C++ is just lower-level in general compared to C#/Java and allows you to deal with smaller things for specific optimizations.
You don't have to learn both at the SAME time, if you think your going good with Java then keep using it. I'm just saying there's nothing wrong with learning both