- No operator overloading
|
This is a minor limitation. Better no operator overloading than broken one (please overload && in C++ to be semantically equivalent to the builtin, if you disagree).
- No function overloading
|
Not true. You obviously do not know Java.
- One of the stupidest iterator systems I've used...why can't I just access the current iterator? Why do I HAVE to call .next() to get it??
|
YAGNI. If you need to use iterators explicitly, you've probably already screwed.
- Slow (but that comes with being an interpreted language)
|
Not true. Java is a compiled language and runs just as fast as C++ in many cases (see an excellent Excelsiors JET compiler). In some cases it can be faster, due to: lack of pointer aliasing, lock elision/coarsening optimisation, faster memory allocation and deallocation, lack of memory fragmentation problems, multithreading without locks, virtual call inlining etc.
Although C++ does support major programming styles, unlike Java, which is nearly pure OO.
|
No, it does not. Its OO support is inferior to Java's / C# / Smalltalk's, it does not support AOP, modular, dynamic or functional programming. So no, it supports just a very narrow set of programming styles, just as Java.
Good programmers when they realize limitations of Java/C#, jump right into Clojure or Scala or F#. C++ compared to Scala feels like GW-Basic compared to C++. Scala is a niche language now, but many enterprises have already picked it (like Twitter, Sony, NASA, Google or LinkedIn). So if you want to invest something in a language used to create high performance, scalable systems running seamlessly on machines with tens or hundreds of cores you would rarther invest your time in Scala. How long can you wait for they add some basic features to C++, like generic type-bounds (aka concepts) or hashmaps - things present in other languages for 10 years or more?
When almost everyone learns C++/Java at college/university, putting C++/Java skills in your CV would not attract any attention. Putting Clojure, Scala, JavaFX or F# would.