Was bedeutet es für die Rückgabe einer Referenz?

Ich verstehen, das Konzept der Referenzen in C++, und ich verstehe, was Sie tun werden, wenn in Parameter der Funktion, aber ich bin immer noch sehr verwirrt darüber, wie Sie arbeiten mit Rückgabetypen.

Beispielsweise, wenn in Parameter, dieser code:

int main (void) {
  int foo = 42;
  doit(foo);
}

void doit (int& value) {
  value = 24;
}

ähnlich wie in diesem code:

int main (void) {
  int foo = 42;
  doit(&foo);
}

void doit (int* value) {
  *value = 24;
}

(im wissen, dass der compiler automatisch ein Sternchen vor Wert jedes mal, wenn es verwendet wird, in der ersten code-Beispiel von doit, aber in der letzteren würden Sie haben, um den Stern in sich selbst jedes mal, wenn Sie versuchen, verwenden Sie Wert)

So, wenn als Referenz verwendet, was bedeutet dieser code (Verwendung der Referenz in einem return-Typ) zu übersetzen? Hat es wieder einen Zeiger auf ein int? Oder würde es nur int zurückgeben?

int main (void) {
  int* foo = /*insert useful place in memory*/;
  foo = doit(foo);
}

int& doit (int* value) {
  //insert useful code
}
  • Würde es wieder eine Referenz auf eine int, Eine Referenz, die Sie an denken können als namens-Zeiger, aber ohne all die rohe Kraft von einem Zeiger. Das große problem mit allen, die , Rückgabe einer Referenz auf ein Objekt, dass sehr wahrscheinlich wird auf dem Stapel erzeugt wird, dass Ihr gehen zu müssen, einige böse Speicher-Probleme, wenn die Funktion zurückgibt und Funktionen-stack wird aufgeräumt. Also , seien Sie sich dessen bewusst, dass, nur weil es einen Hinweis, dass die Dosis NICHT bedeuten, dass Sie haben keine Speicher Probleme, und mit Referenzen, es ist wirklich noch schlimmer, weil das Speicher-Problem versteckt ist.
InformationsquelleAutor crodriguez | 2012-12-05
Schreibe einen Kommentar