El punto inicial de cualquier objeto es el constructor, así que es necesario conocer los distintos tipos que se nos ofrece para escoger el más adecuado.
Los constructores definidos son los siguientes:
||
Prototipo ||
Descripción ||
|| CString();
|| Crea e inicializa un nuevo objeto vacío. ||
|| CString(
IN const CString& origen);
|| Crea un nuevo objeto a partir de otro CString, y hace que la estructura CStringData quede compartida entre ambos objetos, incrementando el contador de referencias para marcar que la misma estructura CStringData está siendo compartida.
Si después se realiza alguna modificación sobre el contenido, se creará una nueva estructura CStringData para el nuevo valor (a través de la función protegida CopyBeforeWrite), dejando así de compartirse los datos, y administrando cada objeto su propia estructura interna. Para comprobar esto puedes ver la
aplicación de ejemplo∞ en la que se muestra el valor y dirección de la estructura CStringData en varias situaciones. ||
|| CString(
IN TCHAR ch,
IN DEFAULT int nRepeat = 1);
|| Crea un nuevo objeto e inicializa el buffer interno a una cadena con el carácter "ch" repetido "nRepear" veces. ||
|| CString(
IN LPCSTR lpsz);
CString(
IN LPCWSTR lpsz);
|| Crea un nuevo objeto e inicializa el buffer interno a la cadena pasada en el puntero "lpsz".
Existe una versión para cadenas ANSI (1 byte por carácter) y otra para cadenas UNICODE (2 bytes por carácter). ||
|| CString(
IN LPCSTR lpch,
IN int nLength);
CString(
IN LPCWSTR lpch,
IN int nLength);
|| Crea un nuevo objeto e inicializa el buffer interno a los "nLength" primeros caracteres de la cadena pasada en el puntero "lpsz".
Existe una versión para cadenas ANSI (1 byte por carácter) y otra para cadenas UNICODE (2 bytes por carácter). ||
|| CString(
IN const unsigned char psz);
|| Crea un nuevo objeto e inicializa el buffer interno al contenido del array de chars "psz". ||
Hay que tener en cuenta, que todos los constructores suponen una reserva inicial de memoria, por lo que son susceptibles de lanzar la excepción CMemoryException.