* In the last case, [[literal string|string]] concatenation must be invoked.
Thus, the name <code>+</code> actually refers to three or four completely different functions. This is an example of ''overloading''.
(Note thatthe ambiguity in the string types used in the last case. doConsider not,"123" by+ themselves,"456" lendin themselves towhich the programmer might ''naturally'' assumingassume concatenation,addition rather than addition,concatenation. isThey meant;may considerexpect "123579" +instead "456", which might reasonably be expected to yieldof "579123456". Overloading can therefore provide different meaning, or semantics, for an operation, as well as differing implementations.)