> I don't think this has anything to do with dynamic vs. static typing.
Well, yes and no.
In a sense, the real problem here is the overloaded + operator, which has two quite different meanings, numerical addition and string concatenation, depending on context. This is particularly a problem in a dynamically typed language, though, because you don't know in advance what that context is and therefore which overload will be chosen.
> It would be theoretically possible to define operator+ in C++ to produce the same behavior as Javascript.
In C++, you can't actually change the behaviour in this particular case, because you can only define overloaded operators where at least one operand has a user-defined type.
So in fact, just to make things simple, the C++ answer on most modern computers will be 56. Go figure. :-)
Well, yes and no.
In a sense, the real problem here is the overloaded + operator, which has two quite different meanings, numerical addition and string concatenation, depending on context. This is particularly a problem in a dynamically typed language, though, because you don't know in advance what that context is and therefore which overload will be chosen.
> It would be theoretically possible to define operator+ in C++ to produce the same behavior as Javascript.
In C++, you can't actually change the behaviour in this particular case, because you can only define overloaded operators where at least one operand has a user-defined type.
So in fact, just to make things simple, the C++ answer on most modern computers will be 56. Go figure. :-)