C++ is too flexible. Yes, in my opinion it’s a disadvantage. The most terrible thing is a possibility to inherit the child class from many parent classes. Sometimes, when the application design has to be changed during the implementation, eg. new facts have been identified or because of the inproper design (and - to be honest - we meet such situations very often, although everyone will agree, it’s “not good”) or the whole design is more “paper like concept” (looking nice on the papaer but not seriously implementable) than “reality model” the implemented application class model seems to be total mess (and many times far away from design concepts). I mean, you can do too many bad things with C++ as in fact it is not to restrictive language. And then, let think about a guy implementing an application for a couple of years, doing total mess, using all the features of C++ without any concept, just to solve the problem and “progress with the schedule”… The guy thinking - “if it is working, it is ok and we don’t have to change anything”. Then, imagine the guy will change the job and you will have to take care about all this mess and crap. I thing it’s impossible to solve many problems with the inproper design and implementation of C++ applications in a sensible period of time. Sometimes it looks, that the best idea is to design and implement the whole thing again, but of course such move is not possible in reality. I think the programming languages have to be more restrictive than flexible. At the end… it’s better to think twice because of some restrictions than avoiding them with the manic-like solutions with the usage of “advanced” features of C++. And - to be more honest - C++ is good, but not for all tasks we can imagine (just because “it’s faster than Java” and also multiplatform). We don’t need the swiss-army-knifes, like plumbers we have to use the set of tools, like : pillers, hammers, cutters, threaders, welding blowpipes and so on… We need to choice a proper language for specific problem. I think the problem with C++ is that many people consider this language as good for almost everything. There are no flexible tools - you cannot hammer in the nails with the usage of pillers, as you cannot write the web application with the usage of C++ (but you can with ASP.NET, some specific J2EE standards or PHP - depending on the complexity of such web application of course).
That’s all from me.