mirror of
https://github.com/ldmud/ldmud
synced 2026-08-12 14:26:05 -04:00
This is a second review pass on concepts; while it includes some formatting edits, this review was much more closely focused on the text itself and consists mostly of typo/grammar edits.
50 lines
1.6 KiB
Text
50 lines
1.6 KiB
Text
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)
|