I completely agree with the weed-out factor, and avoiding inefficient pass-by-value for objects requires fanatical dedication to using references. But I disagree with the claim about object models. Any time you define a struct and functions to operate on that struct, you have an object model. It's probably true that the object models in C tend to be much simpler than in C++, because C++ lets you go hog wild, but if two years down the road, you realize that your C structs need adjustments, it may still require a lot of refactoring.