Also jetzt praktisch gesehen liegt z.B. ein Vorteil bei der Datenübergabe. Heißt, du willst einer Funktion die Daten eines Spielers übergeben, du könntest das ganze mit ganz normalen Parametern machen, die Daten kopieren und dann in der Funktion verwenden und dann später diese Daten als Wert zurückgeben....
Aber was, wenn deine Spielerklasse extrem groß ist? Du musst dann soviele unnötige Daten mitliefern, dabei reicht es doch, zu sagen, wo die Daten des Spielers zu finden sind (ein Zeiger auf die Adresse), damit die Funktion damit umgehen kann!
Könnte man so fast in einem Buch abdrucken finde ich :-).
Ein weiterer Anwendungsfall neben der Übergabe von Daten an Funktionen oder ähnlichem ist der, dass du abhängig von bestimmten Bedingungen mit einem oder keinem bestimmten Objekt arbeiten willst, könnte zum Beispiel so aussehen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
AnObject Men[2000],
Women[2000];
void KillSomeOneOrNone()
{
int randomvalue = random(2); // zufallswert von 0-2, bei 0 wird ein mann selektiert, bei 1 eine frau, bei 2 nichts
AnObject* target = randomvalue==0 ? &Men[0] : randomvalue==1 ? &Women[0] : NULL;
if( target )
{
double distance = vPosition.Distance(target->vPosition);
if( TargetInRange(distance) )
{
Kill(Target);
}
}
}
|
Dummes Beispiel, aber ich denke man versteht, was gemeint ist ;-).
LG
Alyx