I don't really have a good answer to this, and will probably leave out important details, but I'll give a few bullets.
First, it's apples to oranges to compare a compiled language to an interpreted one. The interpreted one will be slower.
Then, there are languages that produce bytecode that is Just-in-Time (JIT) compiled into machine code. Theoretically, JIT compilation could produce code that is faster than just static compilation because it has more available runtime information. However, I don't know if this is reality or not. Probably depends on how good the JIT compiler is.
The closest thing to compare C++ is other native-compiled languages, such as Rust. In some cases, I've heard Rust matches C++ in speed, but there are various things that C++ (with the GCC compiler) is still better at. Newer languages also probably have libraries that aren't as optimized.
https://stackoverflow.com/questions/13853053/what-makes-c-faster-than-python
But it's not even just about interpretation vs JIT vs native compilation. There do exist compilers for languages like Python, but the speed still probably won't be equivalent to C or C++. It's also about the philosophy of the language. C++'s design allows for abstraction while still keeping performance. It uses things like RAII, and has no built-in garbage collection. Other languages, such as C# and Java, can do things differently. For example, they manage memory with a garbage collector. I assume objects in C# and Java are bigger because everything inherits from Object, while this concept does not exist in C++.
Also, hand-crafted benchmarks can be misleading, because C and C++ are probably the best at doing nitty-gritty hand [micro-]optimizations. But a good reason for why that's true, I'm not really sure how to explain.
Hope someone else knows more specifics than me.