| |
1-54 Abbildende C++-Sprache, v1.1 Juni 2003 1 // C++ leeres operator<<=(Any&, const T&);// kopierenform leeres operator<<=(Any&, T *); // nicht-kopierenform Merken Sie, daß die kopierenform mit der ersten gezeigten Form groß gleichwertig ist, bis zu Anrufer wird betroffen. Diese "link-verschieben-weisen" Operatoren werden verwendet, einen geschriebenen Wert in irgendwie einzusetzen zu wie folgt. // C++ Langer Wert = 42; Irgendein a; a < < = Wert; In diesem Fall die Version von operator<< = lang überbelastet für Art muß zu in der LageSEIN stellen Sie den Wert und das TypeCode ein richtig für die irgendwelche variabel. Einen Wert in irgendwie einstellen operator<< verwenden = bedeutet das: ? für die kopierenversion von operator<< = , die Lebenszeit des Wertes in irgendwelche ist unabhängig von der Lebenszeit des Wertes überschritt zum operator<< = . Implementierung von den irgendwelchen kann nicht seinen Wert als Hinweis oder Zeiger zu speichern bewerten Sie überschritten zum operator<< = . ? für die noncopying Version von operator<< = , eingesetzt T * wird durch verbraucht irgendwelche . Der Anrufer kann möglicherweise nicht verwenden T * spitz- zu den Daten nach Einfügung zugänglich machen, seit den irgendwelchen nimmt Besitz von ihm und ihn kann spitz-zu sofort kopieren an Daten und zerstören die Vorlage. ? mit den kopierenund nicht-kopierenversionen von operator<< = , irgendwie vorhergehend Wert hielt durch die irgendwelche wird richtig freigegeben. Z.B. wenn Any(TypeCode_ptr, void*, TRUE) Erbauer wurde angerufen, um zu verursachen Irgendwelche , die irgendwelche ist für das Freigeben des Gedächtnisses verantwortlich, das auf durch die Lücke gezeigt wird * vor der Kopie des neuen Wertes. Kopiereneinfügung einer Zeichenkette schreiben, oder breite Zeichenketteart verursacht eins vom folgenden hervorzurufende Funktionen: // C++ leeres operator<<=(Any&, constputzfrau *); leeres operator<<=(Any&, const WChar *); Da alle Zeichenkettearten abgebildet werden, um zu verkohlen * und alle breiten Zeichenkettearten werden zu abgebildet WChar * , nehmen diese Einfügungfunktionen an, daß die Werte, die eingesetzt werden, sind unbegrenzt. Abschnitt 1,16,4, "Unterscheiden Boolesch, Oktett, Putzfrau, wchar, gesprungen Zeichenkette und gesprungenes Wstring, "auf Seite 1-59 beschreibt wie gesprungene Zeichenketten und gesprungene breite Zeichenketten können in irgendein richtig eingesetzt werden . Merken Sie diese Einfügung von breite Zeichenketten in dieser Weise hängt von StandardC++ ab, in dem wchar_t ist ein eindeutiges Art. Kodieren Sie, das über Standard beweglich sein muß und ältere C++-Compiler verwenden müssen Any::from_wstring Helfer. Einfügung Noncopying von gesprungen und unbegrenztes Zeichenketten können mit dem Any::from_string erzielt werden Helferart. Ähnlich noncopying Einfügung der gesprungenen und unbegrenzten breiten Zeichenketten kann erzieltes Verwenden sein |  |
|
| |
|
|