| |
Juni 2003 C++-Diagramm: Diagramm für örtlich festgelegte Arten 1-31 1 Fortfahren mit dem Beispiel: // C++ non_const = str1.name; // 3: kein freies, keine Kopie const2 = str2->name; // 4: kein freies, keine Kopie Auf der Linie gekennzeichnet 3, str1.name wird non_const zugewiesen . Seit non_const ist eine Zeigerart (Putzfrau * str1.name wird nicht freigegeben noch sind die Daten, die es auf kopiert zeigt. Nach der Anweisung str1.name und non_const effektiv Punkt zumselben Ablage, mit str1.name Haltebesitz dieser Ablage. Linie 4 ist zu identisch Linie 3, obwohl const2 ist ein Zeiger zur constputzfrau; str2->name ist freigegebenes kein noch kopiert weil const2 ist eine Zeigerart. // C++ str1.name = non_const; // 5: geben Sie, keine Kopie frei str1.name = const2; // 6: freie alte Ablage, Kopie Linie 5 bezieht Anweisung einer Putzfrau mit ein * zu str1.name das das alte ergibt str1.name freigebend und der Wert von non_const Zeiger, aber nicht die Daten es Punkte zu, kopierend. Das heißt, nach der Anweisung str1.name Punkte zu die gleiche Ablage wie non_const Punkte zu. Linie 6 ist dieselbe wie Linie 5 außer daß weil const2 ist a constputzfrau * , werden die Daten, die sie auf zeigt, kopiert. // C++ str2->name = str1.name; // 7: freie alte Ablage, Kopie str1.name = string_var; // 8: freie alte Ablage, Kopie string_var = str2->name; // 9: freie alte Ablage, Kopie An Linie 7, wird Anweisung zu einem Mitglied von einem anderen Mitglied, so die Vorlage durchgeführt Wert ist vom linken Mitglied wird freigegeben und der neue Wert wird kopiert. Ähnlich Linien 8 und 9 beziehen Anweisung nach oder von einem String_var mit ein so in beiden Fällen die Vorlage Wert der linken Seite wird freigegeben und der neue Wert wird kopiert. // C++ str1.name._ptr = str2.name; // 10: kein freies, keine Kopie Schließlich benutzt Linie 10 den _ PTR Feldaccessor, also kein Freigeben oder die Kopie findet statt. Solcher Verbrauch ist gefährlich und sollte im Allgemeinen vermieden werden. Anmerkung: Ausgabe 4243 Compliant Programmgebrauch neu structs und Löschung dynamisch zuteilen freigeben sie. 1,11 Diagramm für örtlich festgelegte Arten Das C++, das für örtlich festgelegtes abbildet wird durch die folgende Kategorie definiert: // C++ Kategorie repariert |  |
|
| |
|
|