Semântica de CString
Embora os objetos CString sejam objetos dinâmicos que podem crescer, eles agem como tipos primitivos internos e classes simples. Cada objeto CString
representa um valor exclusivo. Os objetos CString
devem ser considerados como cadeias de caracteres reais, em vez de ponteiros para cadeias de caracteres.
Você pode atribuir um objeto CString
a outro. No entanto, quando você modifica um dos dois objetos CString
, o outro objeto CString
não é modificado, conforme mostrado pelo exemplo a seguir:
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"
Observe, no exemplo, que os dois objetos CString
são considerados "iguais" porque representam a mesma cadeia de caracteres. A classe CString
sobrecarrega o operador de igualdade (==
) para comparar dois objetos CString
com base no valor (conteúdo) deles, em vez de na identidade (endereço).