Ich habe versucht, auf diesem zu suchen, da ich wette, dass es solche Fragen schon gibt. Allerdings bekomme ich nur Themen über die Weitergabe durch Verweis in einer globalen Umgebung.Als Referenz übergeben, nur Kindbereich?
Ich wunderte mich über das Folgende;
Variable Umfang ist nur in dieser Funktion und wird gereinigt werden, wenn der Umfang verlassen
void Class::DoSomething(){
String s = "localVariable";
cout << s;
}
Wenn ich die vorherige Funktion in den beiden folgenden Funktionen ändern würde. Würde der Gültigkeitsbereich auch nur in der Elternfunktion sein und wird der Variablenspeicher freigegeben oder muss ich free() aufrufen?
void Class::DoSomethingParent(){
String s = "localVariable"; //Local scope only
//This function uses the reference of my variable s.
Class::DoSomethingChild(s);
//Does the prior function do anything special because of the reference,
//so I have to call free(s)?
//Or does the variable still gets freed after leaving the scope of this function?
}
void Class::DoSomethingChild(String& value){
cout << value;
}
Sie müssen nichts Besonderes tun, 's' gehört zum Umfang von' DoSomethingParent' und wird zerstört sobald diese Funktion endet – CoryKramer
Es gibt keine Notwendigkeit, etwas explizit zu befreien, 's' wird automatisch aufgeräumt, wenn der Umfang ist links. – user0042
's' ist definiert als eine lokale Variable. Es spielt keine Rolle, dass Sie es durch Referenz zu einer anderen Funktion senden. Wenn der Bereich endet, wird der Speicher wie jede lokale Variable automatisch freigegeben. – Eli