...it only has inheritance of interface and no implementation inheritance. (Java does both of the above, C++ only has the later).
C++ supports implementation inheritance if you use pure virtual base classes (which is a good thing to do, by the way). Another way that C++ can do something like implementation inheritance is via generic programming (templates), which Java has yet to support.
I recommend C++ because it is multi-paradigm. It can be used for procedural, object-oriented, and generic programming... just like perl.