Spróbuj napisać duży program w C++ ze wszystkimi metodami wirtualnymi (oprócz tych statycznych) z obsługą wtyczek, które też będą korzystały z metod wirtualnych.
Z kolei jak piszesz w Javie strukturalnie, to Ci te wszystkie klasy przeszkadzają i zaciemniają kod. Jeżeli w twoim programie żyłowanie wydajności nie jest potrzebne, to nie pisz go w C++. Nie da się stworzyć języka, który będzie dobry do wszystkich zastosowań. Piszesz, że Java jest tylko wolniejsza od C++ dwukrotnie. Rzeczywiście, to w większości przypadków nie ma znaczenia, bo i tak czekasz na IO, czy bazę danych. To wtedy nie używaj C++. Java z założenia jest językiem prostym, stawiającym na wygodę programowania i na szybkość. W C++ z kolei głównym założeniem jest to, że ma być możliwość napisania jak najszybszego programu. Dlatego np. metody nie są domyślnie wirtualne, nie używa GC, tylko trzeba o tym myśleć (wykorzystanie w tym celu stosu poprzez RAII jest szybsze).
Można to zobaczyć na przykładzie szablonów. Składnia ich nie jest najprzyjemniejsza, nie pisze się ich najwygodniej (używanie z kolei już jest wygodne), ale dają ci możliwość zrobienia funkcji generycznych nie płacąc przy tym nic poza wielkością wynikowego programu i czasem kompilacji (główny przykład: std::sort vs qsort). Nie mówię, że nie da się takiego języka zrobić lepiej (D ;)) i język programowania może bez kłopotu nie być "context free" (do elementów krotki trzeba odwoływać się za pomocą get<1>(krotka), bo inaczej trzeba by pisać krotka.template get<1>()). Jednak C++ dużo się dzięki ostatniemu standardowi rozwinął, zachowując jednak kontrolę nad programem.
Oczywiście pisząc np. aplikację biznesową w C++ to wiercisz dziurę w ścianie gwoździem. Musisz się namęczyć, a efekt i tak będzie ten sam. Są jednak sytuacje, gdzie pięciokrotnie większy koszt programistów jest niwelowany z nawiązką przez koszt dwukrotnie mniejszej farmy serwerów. Dodatkowo są systemy, gdzie masz ograniczoną wydajność i potrzebujesz wycisnąć z nich jak najwięcej, choć w tym wypadku C też się mocno trzyma. Nie można też zapominać o grach, gdzie silniki tytułów pisanych przez duże studia są praktycznie wyłącznie w C++. C++ nie jest ładnym językiem, gdyby dało się go zastąpić jakimś innym, to zostałby jak COBOL w dziedzinie legacy system. Można np. popatrzyć na Fortrana, jest to język zdecydowanie gorszy, niż większość języków w powszechnym użytku, ale jest także najprostszym językiem do napisania wysokowydajnych programów obliczeniowych na macierzach i nadal w tej dziedzinie króluje (może, gdyby szablony w C++ były łatwiejsze w użyciu, to by się to zmieniło).