El 14 de septiembre de 2017, publicamos una versión revisada de nuestra Política de privacidad. Tu uso continuado de video2brain.com significa que aceptas este documento revisado, por lo que te recomendamos que dediques unos minutos a leerlo y comprenderlo.

C++: Librería de tratamiento de cadenas

Uso de constructores en BWString

Prueba ahora LinkedIn Learning sin cargo y sin compromiso.

Prueba gratis Mostrar modalidades de suscripción
La clase BWString incluye varios constructores: uno por defecto para crear cadenas vacías, otro para construir desde un string de C, desde otro objeto BWSTring e incluso un constructor de movimiento. También veremos su destructor.
06:37

Transcripción

La clase BWString, tiene un conjunto completo de constructores incluyendo un constructor de movimiento. Aquí tengo una copia de la clase BWString y de hello.cpp extraídas de los ficheros de ejercicios. Vamos a empezar con BWString.edge Aquí encontraremos los constructores al principio de la sección pública de la clase. Tenemos un constructor por defecto, que crea una cadena vacía. Tenemos un constructor que construye desde un String c y otro que es un constructor de copia, que construye desde otro objeto de BWString. Tenemos un constructor de movimiento y también tenemos el destructor. Un punto interesante sobre el constructor de movimiento, esta macro NOEXCEPT que se define aquí, es el else del ifdef de Microsoft C El motivo es que Microsoft C++ no admite todavía el modificador NOEXCEPT que es parte del C++11 por lo que se utiliza esta macro en su lugar. Hay una macro denominada _NOEXCEPT así que utilizo esa macro. Y en la sección else para los compiladores que no son Microsoft C, simplemente la defino como la palabra clase NOEXCEPT. Por supuesto, un constructor de movimiento necesita que exista NOEXCEPT para poder funcionar. Aquí, en el fichero cpp de BWString, podemos ver los constructores en la parte superior. El constructor, por defecto llama a RESET, que está más abajo. RESET simplemente reinicia toda la memoria, limpia toda la memoria, apunta el string a un null pointer, y pone a cero la longitud del String. Por tanto, es solo un método que restablece todo a su valor por defecto. Se hace lo mismo con el constructor que tenemos aquí. También tenemos nuestro constructor de copia y nuestro constructor de String de C. Ambos llaman a copy String. Copy String está más abajo. Aquí está. Copy String, obtiene la longitud del String que se pasa hasta el máximo de Max_Len de BWString, que se define aquí, en el fichero de cabecera, como de 64Ks. Después toma esa longitud y llama a allocstring y a stringcpy. A allocstring, lo podemos encontrar por aquí, aquí está. Allocstring utiliza new para reservar un string de esa longitud + 1 Verás también que new, cuando se llama con paréntesis al final, en realidad rellena con ceros el nuevo espacio en memoria. De esta manera podemos hacer nuestra string copy que copia solo hasta el número de caracteres y el resto del espacio. Ese último byte, ya será un 0 para el terminador de String de c, después configura la longitud y el String Length así que tenemos aquí dos cosas: por un lado, el puntero da carácter para el string por otro, la longitud del string. Verás que ambos llaman a copy string Que se define con el carácter constante S que es un puntero a String de C puntero a carácter constante S al que le vamos a pasar un objeto BW String. Podemos hacerlo porque tenemos este operador de conversión, aquí está, que devuelve un String de C desde la clase, así que ese operador de conversión nos permite hacerlo. El operador de conversión está justo aquí, simplemente devuelve la cadena a c+ Así que no es nada costoso si tenemos un objeto, basta con tomar el String y devolverlo. Seguimos adelante y vamos a ver algunos de estos constructores en funcionamiento. Por supuesto, cuando compilamos y ejecutamos nuestro Hola Mundo, usamos nuestra BWString y de nuevo, utilizamos ese operador de conversión para pasarlo a Message, que utiliza un puntero a String de caracteres constante. Así que este es nuestro constructor de String de c puedo poner esto aquí, decir, BWSTRIng 1 es igual a 1 y así es nuestro constructor de String de C: BWString 2 igual a 1. Y así será nuestro constructor de copia. Puedo utilizar Message e imprimir ambos. Cuando compilo y ejecuto ahí están. También puedo utilizar el constructor de movimiento. Compilo y ejecuto. Y ahora el primero es null, y el segundo es un uno. Eso es porque lo hemos movido en lugar de copiarlo, los constructores son bastante claros en esta clase. El constructor de movimiento es el único que es un poco diferente, si miramos nuestro constructor de movimiento lo que hace en realidad es copiar el puntero desde el otro objeto y copia la longitud del otro objeto. Después asigna null pointer al puntero del otro objeto y cero a la longitud, esto es así porque copiar esos punteros es en realidad muy muy rápido y eficaz. No utiliza muchos ciclos, solo es una escala o valor. No supone más trabajo que si estuviésemos utilizando un puntero inteligente y usando mov. Probablemente sea menos trabajo que eso, después llamamos a RESET en el otro objeto para asegurarnos que se deja en un estado conocido. Es muy, muy sencillo. Así es que el constructor de movimiento , es el único que es un poco diferente pero aún así, sigue siendo muy sencillo. Estos son los constructores de la clase BWString.

C++: Librería de tratamiento de cadenas

Adapta tus proyectos en C++ para ofrecer la mejor gestión de recursos usando librerías personalizadas de tratamiento de cadenas, BWString, constructores, operadores, y muchos más.

37 min (9 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:15/12/2016

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.