| CONCEPT |
| overloading |
| |
| DESCRIPTION |
| This concept is strongly connected with the concept of inheritance. |
| A function is called 'overloaded' if it is defined more than once |
| in an object. This can happen if the object inherits other objects |
| which have defined a function with the same name. |
| Usually the overloading is wanted and intended by the inheriting |
| object to change the behaviour of the function it overloads. |
| To call the overloaded functions from the overloading object the |
| ::-operator is used. |
| From outside the object only one of the functions can be called |
| via call_other() or the like; this will be the topmost of all |
| overloaded functions. |
| |
| Normally an overloading function is declared the same way as the |
| overloaded function, this means it has the same number and types |
| of arguments. If an object wants to change the behaviour of the |
| function in a way that it can get more arguments than the original |
| function, it has to use the modifier 'varargs' or a compiler error |
| will be raised. |
| |
| EXAMPLE |
| File /players/alfe/a.c: |
| |
| foo() { write("A"); } |
| |
| File /players/alfe/b.c: |
| |
| foo() { write("B"); } |
| |
| File /players/alfe/c.c: |
| |
| inherit "players/alfe/a"; |
| inherit "players/alfe/b"; |
| |
| foo() { |
| a::foo(); |
| b::foo(); |
| write("C"); |
| } |
| |
| To call "players/alfe/c"->foo() will now result in the output of |
| ABC. |
| |
| SEE ALSO |
| modifiers(LPC), inheritance(C), functions(LPC) |