| > the transparency and predictability of what machine code gets generated from the source code. This gets said a lot, but unless you're writing C code for a microcontroller (or a PDP11), that isn't even close to being true. > When you write "a + b", you won't end up with kilobytes of machine code just because someone in some header overloaded the + operator. You can't overload "+" for integers or floats. If you add two numbers together, you get what you expect, always. If they're not numbers, and somehow you expected `a + b` to work without an overloaded operator, then I don't know what to say. > You want a function, you define that function. Then you define it again for another type, then again, then again... Then you write a macro and now your colleagues hate you. > All of these constructs, should they be added to the language, will result in a compiler generating heaps of code from a simple code snippet Not necessarily. |
You can't overload the + operator in C. If you see a+b in code you know it is adding two numbers (or a compile error). In C++ it could be doing anything. In C you may question the size or type (fp vs int) of the variables, but not the operator. + does addition. Always.