CString — semantyka
Mimo że obiekty CString są obiektami dynamicznymi, które mogą rosnąć, działają jak wbudowane typy pierwotne i proste klasy. Każdy CString
obiekt reprezentuje unikatową wartość. CString
obiekty powinny być uważane za rzeczywiste ciągi, a nie jako wskaźniki do ciągów.
Można przypisać jeden CString
obiekt do innego. Jednak podczas modyfikowania jednego z dwóch CString
obiektów drugi CString
obiekt nie jest modyfikowany, jak pokazano w poniższym przykładzie:
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"
Zwróć uwagę, że w przykładzie dwa CString
obiekty są traktowane jako "równe", ponieważ reprezentują one ten sam ciąg znaków. Klasa CString
przeciąża operatora równości (==
), aby porównać dwa CString
obiekty na podstawie ich wartości (zawartości), a nie ich tożsamości (adresu).