Op dinsdag 21 mei 2002 17:31 schreef nhimf het volgende:
zoals al eerder gezegd is: &* is een referente pointer.
Waarom zou je dat willen? Nou simpel, als je wilt dat de pointer naar een ander geheugen adres gaat wijzen.
Als je veel met dynamisch geheugen werkt kom je dit vaak tegen.
Er zijn mensen die dit ** prefereren, maar in weze is dit langzamer, omdat je met een referentie in 1x het goede geheugen gebied te pakken hep en met een pointer moet je eerst de variabele uitlezen en dan hep je pas het geheugen adres te pakken.
Als je prog erg afhankelijk is van de snelheid kan je beter &* gebruiken ipv **.
btw ** gebruik je meestal voor een array van pointers.
Uh sneller? Ik denk dat je hiermee bedoelt dat bij compilen de adressen van statische objecten kan worden ingevuld?
Ik vraag me zeer af of een dubbele pointer bij dynamische gebruik langzamer is dan references.
Op dinsdag 21 mei 2002 10:39 schreef MSalters het volgende:
** of *& is beide onduidelijk, maar om nou te zeggen dat ** duidelijker is?
Achja zal misschien wel smaak zijn. (ik schrijf btw ook liever int main(int argc, char *argv[]) ipv de dubbele pointers).
Ik heb zelf nog nooit deze constructies gebruikt. Bij references ga ik er, misschien fout, onbewust van uit dat er direct een object aan hangt.
Op zich is het helemaal niet erg dat de reference naar pointer een pointer referencet die nergens naar wijst. Je weet namelijk zeker dat
code:
1
2
| MyObject* ptr = 0; // of een echt object natuurlijk
MyFunction() = ptr; // Denk NewCallBackObject() = ptr; |
goed is; de return value referenced altijd iets waaraan je knt assignen. Met jouw ** versie kan dat niet zeker:
*MyFunction() is misschien een null-pointer dereference.
Tja maar om nou return-references te gebruiken om waardes mee te geven aan object/functie vind ik zowiezo al erg