CString-Semantik
Obwohl CString-Objekte dynamische Objekte sind, die wachsen können, funktionieren sie wie integrierte Grundtypen und einfache Klassen. Jedes CString
Objekt stellt einen eindeutigen Wert dar. CString
Objekte sollten als tatsächliche Zeichenfolgen und nicht als Zeiger auf Zeichenfolgen betrachtet werden.
Sie können ein CString
Objekt einem anderen zuweisen. Wenn Sie jedoch eines der beiden CString
Objekte ändern, wird das andere CString
Objekt nicht geändert, wie im folgenden Beispiel gezeigt:
CString s1, s2;
s1 = s2 = _T("hi there");
ASSERT(s1 == s2); // they are equal
s1.MakeUpper(); // Does not modify s2
ASSERT(s2[0] == _T('h')); // s2 is still "hi there"
Beachten Sie im Beispiel, dass die beiden CString
Objekte als "gleich" betrachtet werden, da sie dieselbe Zeichenfolge darstellen. Die CString
Klasse überlastet den Gleichheitsoperator (==
), um zwei CString
Objekte basierend auf ihrem Wert (Inhalt) und nicht ihrer Identität (Adresse) zu vergleichen.